Apache2 не может установить заголовки «Соединение» и «Обновление» - PullRequest
0 голосов
/ 01 марта 2020

Я работаю над настройкой соединения через websocket через reverse_proxy. Наконец-то у меня есть рабочий конфиг для Nginx, но я бы предпочел использовать Apache2.

Это необходимые строки конфигурации в Nginx:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Я пытался перевести их в Apache2, но, похоже, он не работает:

<If "%{HTTP:upgrade} == 'websocket'">
  RequestHeader add Upgrade "websocket"
</If>
RequestHeader set Connection "upgrade"  

Apache2 просто игнорирует эти команды ... Когда я изменяю имена заголовков, они больше не игнорируются, но это мне не помогает:

RequestHeader set X-Connection "upgrade"

Итак: Apache2, похоже, игнорирует изменения в заголовках «Upgrade» и «Connection».

(я работаю с сервером отладки, который печатает все полученные HTTP-запросы со всеми их заголовками - так что я могу напрямую сравнивать Nginx и запросы Apache2 - и, следовательно, я знаю, что Apache2 игнорирует мою команду.)

Как я могу заставить это работать в Apache2?

1 Ответ

0 голосов
/ 01 марта 2020

Сам нашел решение: Apache не позволяет устанавливать эти заголовки - вместо этого вам нужно использовать механизм перезаписи:

RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:3000/$1 [P,L]

Apache автоматически добавит правильное «Обновление» и заголовки «Соединение».

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