Я видел этот вопрос, но, похоже, у меня он не работает.
Текущая (рабочая) ситуация:
server {
listen 443 ssl;
server_name updates.example.com;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
location /update {
proxy_pass "http://localhost:5000";
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Client-Subject $ssl_client_s_dn;
proxy_set_header X-Client-Cert $ssl_client_cert;
}
location / {
proxy_pass "http://localhost:5001";
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Теперь я хотел добавить префикс местоположения в nginx перенаправляет, оставляя бэкэнд нетронутым.
Следуя приведенным выше ответам на вопрос, я попробовал что-то вроде строк:
location /manage {
proxy_pass "http://localhost:5001/";
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
или:
location /manage {
rewrite /manage/(.*) /$1 break;
proxy_pass "http://localhost:5001";
proxy_redirect off;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
На самом деле оба этих "типа" работают, поскольку отображается правильная страница, но оба не работают обновите его через websocket. Я не вижу ошибок в приложении, но все, что я делаю на странице, ничего не запускает в бэкэнд-приложении (приложение python RemI). Очевидно, соединение через веб-сокет не переносится правильно.
Что мне не хватает?
Эта форма работала у меня с веб-сокетами (без кавычек):
location /alternate/primus/ {
proxy_pass http://servername/primus/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}