我將 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
答案1
事實證明,這不是 URL 編碼/解碼的問題。這只是我的操作員錯誤 - 在您的任何代理終止 SSL 時必須確保X-代理協議標頭設定為https這樣 Jenkins 以這種方式產生的所有 URL 都會使用以下方案https。我錯過了故障排除頁面上文檔中的行。簡單添加:
http-request set-header X-Forwarded-Proto https
到後端定義刪除了警告。