У меня есть серверный блок Nginx, который передает запросы на сервер node.js. Этот сервер обслуживает как контент HTTP, так и контент WS (websocket). Можно ли добавлять заголовки обновления для запросов, которые НЕ должны обновляться до подключений к веб-сокетам?
, т. Е. Использование Nginx для прокси на сервере Node.js, который обслуживает HTTP и WS, было бы целесообразно использовать отдельные серверные блоки?
В настоящее время это мой Nginx серверный блок:
server {
listen 443 ssl;
listen [::]:443;
server_name api.mysite.com;
ssl_certificate ...;
ssl_certificate_key ...;
ssl_dhparam ...;
ssl_protocols ...;
ssl_prefer_server_ciphers on;
ssl_ciphers ...;
location / {
proxy_pass http://localhost:5000;
proxy_buffering off;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $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-Host $server_name;
proxy_set_header Access-Control-Allow-Origin *;
}
}
Похоже, я всегда добавляю заголовки Upgrade
и Connection
к запросам, передаваемым на Node.js сервер, даже если я не хочу обновлять:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
Первая строка выглядит так, как будто для заголовка «Upgrade» установлено значение $ http_upgrade, переданное из запроса. Я предполагаю, что если этот заголовок НЕ передается в запросе, тогда для «Upgrade» будет установлено значение null
(или эквивалентное), что не будет иметь никакого эффекта. Это правильно?