Модификация 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" жестко запрограммирован в этом модуле.