websocket Apache2无法设置头“Connection”和“Upgrade”

dvtswwa3  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(195)

我正在通过reverse_proxy设置WebSocket连接。我终于有了Nginx的工作配置,但我更喜欢使用Apache 2。
这些是Nginx中需要的配置行:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

字符串
我试着把它们翻译成Apache 2,但似乎不起作用:

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


Apache 2只是忽略这些命令。.当我更改头文件名时,它们不再被忽略,但这对我没有帮助:

RequestHeader set X-Connection "upgrade"


所以:Apache 2似乎忽略了对“Upgrade”和“Connection”头的更改。
(我正在使用一个调试服务器,它打印所有接收到的HTTP请求及其所有头部-所以我可以直接比较Nginx和Apache 2请求-因此我知道Apache 2忽略了我的命令。
如何在Apache 2中使用此功能?

piv4azn7

piv4azn71#

我自己找到了一个解决方案: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”头。

相关问题