У наведеному нижче фрагменті конфігурації для nginx:
server {
listen 443;
listen [::]:433;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
server_name example.com;
root /var/www/example.com;
index index.html;
error_page 502 = @fallback;
error_page 404 = @not_found;
location / {
#try_files /index.html $uri =404; # A
try_files $uri =404; # B
}
location /service/ {
rewrite ^/service/(.*)$ /$1 break;
proxy_set_header X-Load-Balancer "a";
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.100:42424;
}
location @fallback {
try_files /502.html =500;
}
location @not_found {
try_files /404.html =500;
}
}
Чому Правильно подано index.html (який знаходиться в /var/www/example.com/), але B не робить і призводить до того, що на сторінці розміщується 404.html сторінка?
index
директива працює на URI з кінцевими косою рисою, але я не одразу зрозумів, що фактичне обслуговування виконується компанієюtry_files
. Це має сенс. Дякую!