nginx обслуживает статические файлы И обратный прокси

Я хочу, чтобы браузер постоянно обменивался данными (веб-сокет) с моими внутренними серверами, поскольку они постоянно получают данные. Но я также хочу, чтобы статические файлы передавались им с помощью 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 обслуживать статические файлы И прокси для внутреннего сервера?

0
задан 6 June 2021 в 05:20
1 ответ

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;
}
1
ответ дан 28 July 2021 в 14:06

Теги

Похожие вопросы