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
以下のように修正。
...
<useSecurity>true</useSecurity>
...
↓
...
<useSecurity>false</useSecurity>
...
$ sudo service jenkins restart
何とか復活。
基本認証の設定間違えた?
その後、基本認証を外して同じ設定をしてみた所、問題なくユーザのログイン画面が表示。
useSecurity
を false
にして、再度基本認証かけなおしたら、ちゃんと ID/PASS が通る。
むむむ。
どうやら useSecurity
が true
だと基本認証のループにハマる模様。
そしてこれは「jenkins管理」 > 「グローバルセキュリティの設定」> 「セキュリティを有効化」をチェックで true
になる模様。
これチェック入れないとユーザ作成出来ないじゃん。どうすりゃいいの。
解決方法
どうやら nginx 側の設定が漏れていたようだ。
最後の行にある「proxy_set_header」を忘れないようにします。この記述を忘れるとAuthorizationヘッダがJenkins本体まで通知されてしまい、NginxのBasic認証は通るがJenkinsが401を返すという理不尽な状況に嵌まります
なるほど。Jenkins おじさんに認証が必要だと間違って伝わっていた訳ですね。
という訳で以下のように修正。
location / {
auth_basic "Basic Auth";
auth_basic_user_file "/etc/nginx/.htpasswd";
...
proxy_set_header Authorization ""; # この一行を追加
}
$ sudo service nginx restart
でめでたし。