ApacheのReverse proxy設定
概要
ApacheのProxy機能を使って任意のURLに転送します。
GitBucketとRedmineを同じサーバー上で動かしていろいろ実験したいなと思ったんですがURLに:8080
って付いてるのもなんかなーってことで
ひと手間加えてあげないと出来なかったので備忘録です。
redmineを動かすためにapacheがport80番ですでに動いていますがgitbucketをport80番で起動するとgitbucket.warに組み込まれてるjettyが競合して起動出来ません。
なのでApacheの機能であるReverse proxyを設定してport8080で起動してるけどhttp://xxx.xxx.xxx.xxx/gitbucket
でもgitbucketにアクセスできるようにします。
前回の続きです。
kitigai.hatenablog.com
前提
OSはMinimalインストール
Redmineは公式インストールガイドそのままでインストール
URLはhttp://xxx.xxx.xxx.xxx/redmine
に設定
httpd.confの編集
Reverse proxyの設定を行うためにhttpd.conf
を編集します。
設定内容はGitBucketのwikiに書いてあるのでそのままコピペします。
- 参考:Reverse proxy with Apache · gitbucket/gitbucket Wiki · GitHub
- 参考:Apache のリバースプロキシの設定方法 - WebOS Goodies
# vi /etc/httpd/conf/httpd.conf
以下の内容をそのまま追記します。場所はどこでもいいと思います。(httpd.confのことよくわかってないです...)
今回は最後のIncludeOptional
手前に入れました。
localhost
をIPアドレスに書き換えてます。
AllowEncodedSlashes NoDecode # ... or "On" for Apache-2.2
ProxyPreserveHost On
ProxyPass /gitbucket http://localhost:8080/gitbucket
ProxyPassReverse /gitbucket http://localhost:8080/gitbucket
httpd.confのチェック
configtestで構文チェックを行います。
# service httpd configtest AH00526: Syntax error on line 351 of /etc/httpd/conf/httpd.conf: AllowEncodedSlashes takes one argument, Allow URLs containing '/' encoded as '%2F'
エラーが出ました。ここでハマりました。
修正
ハマっていろいろ試しましたがエラーの通り大人しくAllowEncodedSlashes
をコメントアウトします。
# vi /etc/httpd/conf/httpd.conf
以下の通りコメントアウトし修正
# AllowEncodedSlashes NoDecode # ... or "On" for Apache-2.2
ProxyPreserveHost On
ProxyPass /gitbucket http://192.168.0.5:8080/gitbucket
ProxyPassReverse /gitbucket http://192.168.0.5:8080/gitbucket
# service httpd configtest AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message Syntax OK
「Syntax OK
」おっけーと言われました。
エラーが出ていますが修正してもよし、無視してもよしです。今回の場合、問題ありません
修正する場合は下記を参照
gitbucket.serviceファイルの修正
前回GitBucketの自動起動設定をする際に.service
ファイルを作成しているのでそれを修正します。
# vi /usr/lib/systemd/system/gitbucket.service
--port=8080 --prefix=/gitbucket
を追加します。
[Unit] Description=Git hosting service [Service] User=root ExecStart=/usr/bin/java -jar /root/gitbucket.war --port=8080 --prefix=/gitbucket [Install] WantedBy=multi-user.target
変更を反映させるために再読込します。
# systemctl daemon-reload
再起動
お遊びサーバーなのでOSごとreboot
かけるほうが手っ取り早いんですが
トライアンドエラーやりまくっているときはそんな面倒なことやってられません
# systemctl restart httpd.service # systemctl restart gitbucket.service
restart
かける
確認
http://xxx.xxx.xxx.xxx/gitbbucket
にアクセス
(status
で確認したほうが早い)
参考サイト様
記事中で紹介させて頂いたサイト(記事)様
雑感
Apacheっていろんな機能あるんすね...