2024年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

 

« オイラ、dockerしてるぜ dockerでリバースプロキシを使用しようとしているのだけれど その1 | トップページ | 株:現物売り約定(NSD) »

2015年11月 7日 (土)

オイラ、dockerしてるぜ dockerでリバースプロキシを使用しようとしているのだけれど その2

というわけで、dockerでredmine,Jenkins,gitlabを動かし、Apache HTTP Serverをリバースプロキシにして外部IFとするわけですが、パスでWebアプリを区別する方式をとるとmod_proxyだけでは相対パスが解決できないのですよ。

それを解決するにはパスに対して、Webアプリごとのパスを追加する必要があるわけで。
mod_proxy_htmlモジュールを使います。
Apache HTTP Serverのdockerイメージは bitnami/apache を使っていますが、これにはmod_proxy_htmlモジュールは入っていません。ですので、以下の手順でモジュールをインストールし使えるようにしたdockerコンテナをdockerイメージにします。(先頭$がVM、#がdockerコンテナ)

※:bitnami/apacheを起動してから以下のコマンドを実行してください。

$ a=`docker ps | grep apache | awk '{print $1}'`
$ docker exec -it $a bash
# apt-get update
# sudo apt-get install libapache2-mod-proxy-html
# apt-get install libxml2-dev
# cd /opt/bitnami/apache2/modules/
# ln -s /usr/lib/apache2/modules/mod_proxy_html.so
# ln -s /usr/lib/apache2/modules/mod_xml2enc.so
# exit
$ docker commit $a apache_rp

httpd.confに以下のように定義

LoadFile    /opt/bitnami/common/lib/libxml2.so
LoadModule  proxy_html_module    modules/mod_proxy_html.so
LoadModule  xml2enc_module       modules/mod_xml2enc.so

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy> <Location /jenkins/>
    ProxyPass http://ci_jenkins:8080/
    ProxyPassReverse http://ci_jenkins:8080/
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /jenkins/
    RequestHeader    unset  Accept-Encoding
</Location> <Location /redmine/>
    ProxyPass http://ci_redmine/
    ProxyPassReverse  http://ci_redmine/
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /redmine/
    RequestHeader    unset  Accept-Encoding
</Location> <Location /gitlab/>
    ProxyPass http://ci_gitlab/
    ProxyPassReverse  /
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /gitlab/
    RequestHeader    unset  Accept-Encoding
</Location>

上記の設定を行うことで、相対パスの問題はとりあえず解決できる。

Readmine_ok_2

Jenkins_ok_2

Gitlab_ok_2

取り敢えずというのは、一部リンクがおかしくなったりします。たとえばRedmineのログインで/redmine/redmine/と2重に設定されたりします・・・。あと、Jenkinsの設定でリバースプロキシがおかしいとか出ます。
ここら辺は、今後の課題ということで。

« オイラ、dockerしてるぜ dockerでリバースプロキシを使用しようとしているのだけれど その1 | トップページ | 株:現物売り約定(NSD) »

コメント

コメントを書く

(ウェブ上には掲載しません)

« オイラ、dockerしてるぜ dockerでリバースプロキシを使用しようとしているのだけれど その1 | トップページ | 株:現物売り約定(NSD) »