Я хочу, чтобы браузер постоянно обменивался данными (веб-сокет) с моими внутренними серверами, поскольку они постоянно получают данные. Но я также хочу, чтобы статические файлы передавались им с помощью nginx. Другими словами, я хочу, чтобы nginx обслуживал статические файлы И ТАКЖЕ прокси для моих внутренних серверов. Я пробовал поместить обе директивы в один блок местоположения:
location / {
# SERVE STATIC FILES:
root C:blah/blah/blah;
index mysite.html;
# ANDDDD REVERSE PROXY TO BACKEND SERVERS:
proxy_pass https://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
..но это просто пропускает обслуживание статических файлов и идет прямо на мои внутренние серверы.
Я также пробовал:
location / {
# SERVE STATIC FILES:
root C:blah/blah/blah;
index mysite.html;
try_files $uri $uri/ @proxy;
}
location @proxy {
# ANDDDD REVERSE PROXY TO BACKEND SERVERS:
proxy_pass https://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
.. но, конечно, это просто обслуживает статические файлы и не работает с прокси, так как mysite.html был найден.
Я также пробовал:
location / {
# SERVE STATIC FILES:
root C:blah/blah/blah;
index mysite.html;
}
location / {
# ANDDDD REVERSE PROXY TO BACKEND SERVERS:
proxy_pass https://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
.. но это вызывает ошибку, так как теперь есть два местоположения / блока.
Кто-нибудь знает, как заставить nginx обслуживать статические файлы И прокси для внутреннего сервера?
index mysite.html
директива заставляет nginx сервер mysite.html
всем запросам, которые заканчиваются на /
.
Если вы хотите обслуживать только файлы из бэкенда, когда статический файл не найден, вам нужно иметь:
location / {
# SERVE STATIC FILES:
root C:blah/blah/blah;
try_files $uri $uri/ @proxy;
}
location @proxy {
# ANDDDD REVERSE PROXY TO BACKEND SERVERS:
proxy_pass https://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}