How to always redirect to index.html in Nginx Docker? How to always redirect to index.html in Nginx Docker? docker docker

How to always redirect to index.html in Nginx Docker?


Comment the following line

# include /etc/nginx/conf.d/*.conf;

Why? Due to the line

include /etc/nginx/conf.d/*.conf;

The default.conf is loaded and your server config is ignored.

In addition, you need to include the root information in your server (which previously was provided by default.conf


How to reproduce

put the following 2 files in the same folder and execute

docker build -t test . && docker run --rm -p 8080:80 test

Dockerfile

FROM nginx:1.16.0-alpine# COPY ./build /usr/share/nginx/htmlCOPY nginx.conf /etc/nginx/nginx.confEXPOSE 80CMD ["nginx", "-g", "daemon off;"]

nginx.conf

user nginx; worker_processes auto;error_log /var/log/nginx/error.log warn; pid/var/run/nginx.pid;events { worker_connections 1024; }http { include /etc/nginx/mime.types; default_type application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                  '$status $body_bytes_sent "$http_referer" '                  '"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;#include /etc/nginx/conf.d/*.conf;    server {    location / {        root   /usr/share/nginx/html;        index  index.html index.htm;        try_files $uri $uri/ /index.html;    }    location ~ ^/$ {        rewrite  ^.*$  /index.html  last;    }    listen       80;    server_name  localhost;    # redirect server error pages to the static page /50x.html    #    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}}