如何使用 websocket 为 GitLab 配置 Apache 反向代理?

如何使用 websocket 为 GitLab 配置 Apache 反向代理?

我在 Apache 反向代理后面有一个自托管的 GitLab 实例。自上次发布以来,实时更新已停止工作。我能检测到的一个症状是,一些 websocket 调用(到wss://gitlab.example.com/-/cable)似乎失败并出现 404:

Firefox 开发控制台的失败请求截图

这看起来像是一个可能的 Apache 配置问题,那么我该如何配置我的 Apache 反向代理以允许这些连接?我当前设置的相关部分如下所示:

ProxyRequests     off
ProxyPreserveHost on

ProxyPass        / https://0.0.0.0:4000/
ProxyPassReverse / https://0.0.0.0:4000/

答案1

诀窍是为 websocket 资源添加一条特殊规则,常规代理设置:

ProxyRequests     off
ProxyPreserveHost on

# The first matching rule wins
ProxyPass        /-/cable wss://0.0.0.0:4000/-/cable
ProxyPassReverse /-/cable wss://0.0.0.0:4000/-/cable

ProxyPass        / https://0.0.0.0:4000/
ProxyPassReverse / https://0.0.0.0:4000/

相关内容