Docker:Apache_Redmine

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
コメントを入力:
 
  • Docker/Apache_Redmine.txt
  • 最終更新: 2025/04/12 05:15
  • by 127.0.0.1