我已将 HAProxy 配置为终止 Jenkins CI 服务器的 SSL 连接,通过普通的 HTTP 代理到 Jenkins CI 服务器后端。[到目前为止] 我可以在 Jenkins CI 服务器 Web 界面中成功执行我需要的所有操作,包括管理实例。
但是,我收到Jenkins“反向代理设置已损坏”警告。这是由于自 Jenkins 版本 1.572 以来更严格的代理配置检查造成的,该版本使用以下形式的 URL:
https://host-name/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/a%2Fb/
测试反向代理配置。发出警告的典型原因是%2F
反向代理将 解码为正斜杠,这会导致 404。
似乎有针对 Apache 和 nginx 反向代理配置的有据可查的配置解决方案来消除此警告。我无法找到类似于 Apache 的“AllowEncodedSlashes On”选项或 nginx 的“proxy_pass”配置,甚至是在 HAProxy 后面设置 Jenkins 的示例(我使用它而不是 Apache 或 nginx,因为我们已经为其他应用程序安装 HAProxy)。
- 操作系统:CentOS 6.6
- HAProxy 版本:1.5.2-2
- 詹金斯版本:1.610
事实证明,这不是 URL 编码/解码的问题。这只是我的操作员错误 - 在任何代理处终止 SSL 时,您必须确保X-Proxy-Proto标头设置为https,以便 Jenkins 以这种方式生成的所有 URL 都使用https方案。我错过了故障排除页面上文档中的行。简单添加:
到后端定义删除了警告。