エンコードされていない URL を Jenkins バックエンドに渡すように HAProxy を構成するにはどうすればよいでしょうか?

エンコードされていない URL を Jenkins バックエンドに渡すように HAProxy を構成するにはどうすればよいでしょうか?

私は、Jenkins CI サーバーの SSL 接続を終了し、通常の HTTP 経由で Jenkins CI サーバーのバックエンドにプロキシするように HAProxy を設定しました。インスタンスの管理を含め、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 を設定する例です (他のアプリケーション用に既に HAProxy が導入されているため、Apache や nginx の代わりに Jenkins を使用しています)。

  • オペレーティングシステム: 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

バックエンド定義から警告を削除しました。

関連情報