今更感の出尽くした感のある記事ですが、
意外にもググっても直接的な記事が出なかったので書いてみました。
なにコレ
トラブルシュートの事例です。
Jenkins + Apache を使ってSSL化したのに、とあるリンクを踏むと http
にリクエストを投げていて400
エラーが発生した事例です。
環境
・Jenkinsを 1090(HTTP)ポートで起動している
・Apacheを 1081(HTTPS)ポート HTTP1080(HTTP)ポートで起動している
※1080は1081にリダイレクトしているだけなので今回の話には出てきません。
状況
上記設定の時に、
Jenkinsの管理 > システムの設定 > Jenkins URL の項目を https
のURLに直して保存ボタンを押した所、
Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
が出てしまった。
戻るボタンで戻って、再度システムの設定にアクセスするとちゃんとJenkins URLは保存されている。
にもかかわらず、保存ボタンを押したら上記エラーになった。(それ以外にも設定のリロードやジョブの設定の保存でも同じくエラーになった。)
調査
調べてみると、 保存
を押した時に呼び出しているURLが既に http
だった。
つまり、
https://user_server:1081/
で作業していたのに、保存
を押すと
http://user_server:1081/
にリクエストを投げてしまっていたので400エラーが出ていた。
原因
原因はこれ
同じ方法で
ProxyRequests Off
Header edit Location ^http https
ProxyPass / http://localhost:1090/
と記載する事で、事なきを得るに至った。