![如何使用 websocket 为 GitLab 配置 Apache 反向代理?](https://linux22.com/image/794189/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20websocket%20%E4%B8%BA%20GitLab%20%E9%85%8D%E7%BD%AE%20Apache%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%9F.png)
我在 Apache 反向代理后面有一个自托管的 GitLab 实例。自上次发布以来,实时更新已停止工作。我能检测到的一个症状是,一些 websocket 调用(到wss://gitlab.example.com/-/cable
)似乎失败并出现 404:
这看起来像是一个可能的 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/