Модификация Apache mod_headers не проходит через ProxyPass

У меня есть GET-запросы веб-сокета, которые поступают на сервер Apache http и перенаправляются на сервер Apache Tomcat 8.5.x (представлен здесь как 192.168.1.77:80).

Я пытаюсь использовать mod_headers, чтобы установить значение заголовка "upgrade".

Внутри моего тега VirtualHost у меня есть эквивалент следующего:

<LocationMatch "/somewhere">
   ProxyPass ws://192.168.1.77:80/socket
   RequestHeader set Upgrade "myvalue"
</LocationMatch>

Это не работает, как я ожидал. Кажется, что набор применяется к Apache http, но не к Apache Tomcat.

В Apache http, когда я добавляю %{Upgrade}i к моему LogFormat, я вижу, что заголовок "Upgrade" установлен в "myvalue".

Однако в журналах Tomcat, если я добавлю *%{Upgrade}i", я вижу, что моя операция установки RequestHeader не вступила в силу, и Tomcat записывает исходное значение заголовка" Upgrade "в исходном запросе GET.

Примечание. Я уже пытался добавить аргумент "ранний", например:

<LocationMatch "/somewhere">
   ProxyPass ws://192.168.1.77:80
   RequestHeader set Upgrade "myvalue" early
</LocationMatch>

Любые мысли о том, что идет не так или что я могу упустить?

1 ответ

Я использую mod_proxy_wstunnel, и, очевидно, заголовок обновления "WebSocket" жестко запрограммирован в этом модуле.

Другие вопросы по тегам