Apache2无法设置标题“连接”和“升级”

问题描述 投票:0回答:1

我正在通过reverse_proxy建立Websocket连接。我终于有了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中工作?

apache websocket
1个回答
0
投票

我自己找到了一个解决方案:Apache不允许设置这些标头-相反,您需要使用重写引擎:

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

然后,Apache将自动添加正确的“ Upgrade”和“ Connection”标头。

© www.soinside.com 2019 - 2024. All rights reserved.