Apache + Redmine(Docker)
環境
- CentOS Stream 9 (ホスト環境)
- ホストに Apache 2.4.53をインストール済み
- SSL証明書として Let's Encrypt を利用
- ホストに対してhttps通信が可能
- ホストのグローバルIPアドレスに関連付けされたドメイン名を取得済み
- Docker 20.10.21 がインストール済み
- Docker上において、Redmineコンテナが動作しており、(ホスト)8081→80(Redmine)のポート設定になっている
構築背景
Docker上でhttps通信用の中継Webサーバを立ててもよかったが、
既に構築しているホスト上のWebサーバ(Apache)を中継させたかった。
そのため、コンテナ上のRedmineに直接アクセスするのではない。
リバースプロキシ及びリダイレクトの設定
ホスト上のWebサーバを中継して、https通信を行うために、Apacheにリバースプロキシを設定する。
『Redmineではログイン後にリダイレクトを行うため、リバースプロキシを設定するだけでは、
ログイン画面はhttps通信ができても、ログイン後はhttp通信になる。』(著者の環境及び能力ではこうなった…)
そのため、リダイレクトですべてのhttp通信をhttps通信にリダイレクトするようにして、
Redmineログイン後もhttps通信となるように設定を行う。
まずは、リダイレクト設定のために、「httpd.conf」を編集する。
$ sudo vi /etc/httpd/conf/httpd.conf ・・・ ----------追記部分----------- <VirtualHost *:80> ProxyRequests off RewriteEngine On RewriteRule ^/$ https://<ドメイン名>/ Redirect / https://<ドメイン名>/ </VirtualHost> ------------------------------ ・・・ # Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/*.conf おそらく「IncludeOptional・・・」よりも上部の方がよさそう。
次にリダイレクトさせるために、「ssl.conf」を編集する。
$ sudo vi /etc/httpd/conf.d/ssl.conf #<VirtualHost _default_:443> ←コメントで削除 <VirtualHost *:443> ←追記 SSLProxyEngine on ProxyPass <path> <アプリのURL> ProxyPassReverse <path> <アプリのURL> 例えば、 <path> = /redmine <アプリのURL> = http://localhost:8081/redmine/
上記2つのファイルを編集後、文法チェックを行い問題がないことを確認する。
$ sudo httpd -t Syntax OK
確認後、apacheを再起動させて、設定したパスを入力して、https通信ができていることを確認する。
$ sudo systemctl restart httpd
コメント