我在 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/