Мой nginx.conf выглядит примерно так
server {
listen 443 ssl;
server_name test.com;
client_max_body_size 100M;
# test.com/ should be a static page
location = / {
root /var/www/
try_files $uri $uri/ /index.html;
break;
}
# everything else should go to the upstream app server
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:3000;
}
}
Моя проблема в том, что при посещении test.com
nginx, похоже, также оценивает блок location /
, потому что он передает запрос на мой вышестоящий сервера не останавливаться на блоке location = /
.Я пытался включить break;
в блок location = /
, и это совсем не изменило поведение.Я знаю, что он соответствует первому блоку location = /
, потому что запрос, который я вижу на моем сервере приложений, относится к /index.html
, который, предположительно, переписывается директивой try_file
(если я изменяю это на /foo.html
, я вижу, что он отражаетсяна моем сервере приложений).
Я пробовал инструменты тестирования местоположения nginx, такие как https://nginx.viraptor.info, и в нем говорилось, что окончательное совпадение должно быть только "точным соответствием", описанным блоком location = /
.
И да, я перезапускаю nginx после каждого изменения конфигурационного файла.
Кто-нибудь знает, почему это происходит?Любая помощь будет оценена!