В следующем фрагменте конфигурации для 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; } } Почему A правильно обслуживает index.html (который находится в /var/www/example.com/), а B - нет, и в результате вместо этого отображается страница 404.html?
Попался! Я помню, что читал, что директива
indexработает с URI с завершающими слешами, но я не сразу понял, что фактическое обслуживание было реализованоtry_files. Это имеет смысл. Спасибо!