nginx
Jenkins

nginx + jenkins でユーザログインを設定→アクセスできなくなった

More than 3 years have passed since last update.

nginx + ubuntu に jenkins をインストール。

したまでは良かったが、ユーザログインを有効にしようとした際にハマったのでメモ。


ログイン認証をかけてみた

「jenkins ユーザ作成」でググってひっかかった記事を参考に設定をしてみる。

http://blog.ybbo.net/2014/01/11/centos-%E3%81%AB-jenkins%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%BB%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A8url%E3%81%AE%E5%A4%89%E6%9B%B4%E3%83%BB%E3%83%A6%E3%83%BC%E3%82%B6/


左メニュー > Jenkinsの管理 > グローバルセキュリティの設定

「セキュリティを有効化」にチェック


書いてある通りにチェックボックスやラジオボタンを選択し、「保存」をクリック。

ところが。


アクセスできなくなった

「保存」した瞬間、基本認証をきかれた。

が、設定していた ID/PASS を入力しても、再度基本認証をきかれる。

再度入力し直しても、また聞かれる。。。

にっちもさっちもいかなくなったので Google先生にすがる。

と、公式 Wiki に以下の記載が!

https://wiki.jenkins-ci.org/display/JA/Disable+security

ログインできないのではどうしようもないので、一旦現状復帰を目指す。

早速やってみる。

$ cd $JENKINS_HOME

$ sudo vi config.xml

以下のように修正。


config.xml

...

<useSecurity>true</useSecurity>
...

...
<useSecurity>false</useSecurity>
...

$ sudo service jenkins restart

何とか復活。


基本認証の設定間違えた?

その後、基本認証を外して同じ設定をしてみた所、問題なくユーザのログイン画面が表示。

useSecurityfalse にして、再度基本認証かけなおしたら、ちゃんと ID/PASS が通る。

むむむ。

どうやら useSecuritytrue だと基本認証のループにハマる模様。

そしてこれは「jenkins管理」 > 「グローバルセキュリティの設定」> 「セキュリティを有効化」をチェックで true になる模様。

これチェック入れないとユーザ作成出来ないじゃん。どうすりゃいいの。


解決方法

どうやら nginx 側の設定が漏れていたようだ。

http://dev.classmethod.jp/tool/jenkins/jenkins_ssl_and_basic_auth/


最後の行にある「proxy_set_header」を忘れないようにします。この記述を忘れるとAuthorizationヘッダがJenkins本体まで通知されてしまい、NginxのBasic認証は通るがJenkinsが401を返すという理不尽な状況に嵌まります


なるほど。Jenkins おじさんに認証が必要だと間違って伝わっていた訳ですね。

という訳で以下のように修正。


nginx.conf

location / {

auth_basic "Basic Auth";
auth_basic_user_file "/etc/nginx/.htpasswd";
...
proxy_set_header Authorization ""; # この一行を追加
}

$ sudo service nginx restart でめでたし。