Что произойдет, если я включу заголовки «Обновление» и «Соединение» в HTTP-запросы, которые не предназначены для обновления до соединений веб-сокетов? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть серверный блок 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 (или эквивалентное), что не будет иметь никакого эффекта. Это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...