gpt4 book ai didi

Apache2 无法设置 header "Connection"和 "Upgrade"

转载 作者:行者123 更新时间:2023-12-02 00:06:16 26 4
gpt4 key购买 nike

我正致力于通过 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 只是忽略这些命令。当我更改 header 名称时,它们不再被忽略,但这对我没有帮助:

RequestHeader set X-Connection "upgrade"

因此:Apache2 似乎忽略了对“升级”和“连接” header 的更改。

(我正在使用调试服务器打印接收到的所有 HTTP 请求及其所有 header - 因此我可以直接比较 Nginx 和 Apache2 请求 - 因此我知道 Apache2 忽略了我的命令。)

我怎样才能使它在 Apache2 中工作?

最佳答案

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

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

Apache 然后会自动添加正确的“升级”和“连接” header 。

关于Apache2 无法设置 header "Connection"和 "Upgrade",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60475454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com