natural born minority
コレもまた「もひとつ探し方がわからなかった」やつで…。
Jenkinsを普通に起動すると http://localhost:8080/
から参照可能で開始します。
運用していくにつれ
などを行いたい場合が出てくることもあります。
しかし、「httpサーバでただバイパスする」だけでは、Jenkins側がそんなことを想定してないので、上手く動きません。
こんな test.conf
ファイルを作り…
server {
listen 80;
location /jenkins {
proxy_pass http://172.17.0.1:8080/; # Dockerコンテナ内から見た親サーバ
}
}
nginx
を起動 (docker経由)
docker run -v ${PWD}:/etc/nginx/conf.d -p 80:80 nginx
で、 http://localhost
を表示。
あれ?表示出来てる…「新しいジョブ」をクリックしてみましょう。
だめですね。内部でリンクのパスを考慮してくれません。
「管理画面にそれっぽい設定は無いか」を探し、 Jenkinsの管理->システム設計を開くと、 Jenkins URL
というのがあるのですが…。
これを変更しても解決しませんで…メール等「表示する箇所が変わる」だけの設定のようです。
これをなんとかしたので、紹介します。
何のことはなく「Jenkinsの引数に --prefix
パラメータを指定するだけ」でした。
java -jar jenkins.war --prefix=/jenkins
これで http://loalhost:8080/jenkins
がトップのURLとなります。
自身の環境は「CentOS6にyumで入れたもの」ですので、その場合は /etc/sysconfig/jenkins
が設定ファイルとなります。そこに以下の設定を追加します。
...
JENKINS_ARGS="--prefix=/jenkins"
先ほどの test.conf
ファイルを「パスを下げた状態」で設定するには、
server {
listen 80;
location /jenkins {
proxy_pass http://172.17.0.1:8080/jenkins; # 1段さげて"jenkins"に
}
}
と、Jenkinsのパスを1段下げた状態でバイパスすると、最初の目論見どおり http://localhost/jenkins
でアクセス出来るようになります。
この話は「サーバのどこからどこへ中継するか」の際に、よく遭遇する問題なので「そのアプリ毎の設定」を調べる癖を付けないといけないなぁと。
転じて「自身でWebアプリを作る」際も、意識しておかないと対応できないので、意識しておきたく思います。
blog comments powered by Disqus