- Cerita

Saya punya website full HTML yang dijalanin lewat docker swarm.

Ekstensi .html nya buat website terlihat “ga profesional” dan juga unclean di address bar.


- Masih Cerita Berikut Solusinya

Dengan kemampuan googling saya, coba cara maenin setting config nginx nya.

Ga nemu, kebanyakan malah bikin error karena di address bar kebuka pake port (contoh: lobamikir.com/tentang-saya jadi lobamikir.com:8080/tentang-saya).

Akhirnya kepikiran cara paling gampang, yaitu hapus pake sed saat build image dan tweak config nginx nya.

  1. Dockerfile yang saya pakai
FROM nginx:alpine

RUN apk --no-cache add tzdata &&\
    rm /etc/nginx/conf.d/default.conf

#CHANGE TO WIB
RUN cp /usr/share/zoneinfo/Asia/Jakarta /etc/localtime
RUN echo "Asia/Jakarta" > /etc/timezone

#add custom config
COPY docker/nginx.conf /etc/nginx/nginx.conf

#setup document root
RUN mkdir -p /var/www/html
WORKDIR /var/www/html

COPY . /var/www/html/

#remove .html from html file
RUN sed -i 's/\.html//g' *.html

EXPOSE 69

CMD ["nginx", "-g", "daemon off;"]
  1. Di file config nginx, tambahkan ini di dalam line server {
location / {
    index index.html;
    rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
    rewrite ^/(.*)/$ /$1 permanent;
    try_files $uri/index.html $uri.html $uri/ $uri =404;
}