2016年4月6日水曜日

JenkinsでProxy Errorが出る場合の対処方法

Jenkins+Apacheで動かしているとき、時々Proxy Errorが出ることがあります。

これ、時々ってのが厄介で、大抵はリロードすれば直ります。
今回、これの原因ぽいのが判明したのでメモっておきます。

Proxy Errorが出る環境は、Jenkins+Apacheでmod_proxyを使っている場合に出ますが、
どうやら、httpsにリダイレクトさせている環境で発生するようです。

というわけで、同様の事例がないか調べてみました。

どうやら、Apacheはhttpsなのに、レスポンスヘッダがhttpなのがいけないらしい。参考
なお、レスポンスヘッダの見方は以下の通り。

curl -ik https://foobar.example.com/jenkins
原因がわかれば対処ができます。参考サイトを参考に
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

を追記してあげると無事直りました。

*Nginxの場合は以下のような感じ。(http->httpの例)
(--prefix=/jenkinsを付けているからと、
proxy_redirect http://localhost:8080/jenkins
なんてやるとダメだったので、バックエンドには付けないほうが良いみたい。)

location ^~ /jenkins {
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_redirect http://localhost:8080 $scheme://$host;
# Optionally, require HTTP basic auth.
# auth_basic "Please authenticate to use Jenkins";
# auth_basic_user_file /opt/nginx/htpasswd;
}

0 件のコメント:

コメントを投稿