Apache のリバース・プロキシを使って、Apache の 443 ポートに来た通信を Nginx の 4443 ポートに飛ばした。
関連エントリー/前提条件
関連するエントリーは以下の通り:
前提条件は下記の通り:
- myserver.com に複数の Rails アプリが動いている
- myserver.com:/var/redmine に最新の Redmine をインストールした
- 今までは https://myserver.com で Redmine を公開
- Apache を利用
- 443 ポートを利用
- 新 Redmine は https://myserver.com:4443 で公開
- Nginx を利用
- 4443 ポートを利用
新 Redmine を Nginx で動かしたのは、他の Rails アプリが使っている Passenger と競合したため。Nginx で 4443 ポートを使ったのは、443 ポートが Apache に使われているため。
Apache のリバース・プロキシを試す
現在、Redmine は https://myserver.com:4443/
で動いている。けれど、ポート番号をいちいち入力するのは手間だし、過去のメールや Wiki にはポート番号なしの URL が記入されており、そこからリンクを辿る時にポート番号を追加するのはとても面倒。
なので、https://myserver.com/
にアクセスしてたら、自動的に https://myserver.com:4443/
に転送する様にしたい。つまり、Apache が 443 ポートで受けたリクエストを Nginx の 4443 ポートに飛ばしたい (また Nginx の 4443 ポートからの返信を Apache が 443 ポートで受け取れる様にしたい)。これを Apache のリバース・プロキシ機能で実現する。
80 番ポートで練習
まずは SSL (443 ポート) を使わない。80 番ポートで練習。
Nginx は 8080 ポートを開く設定にした:
server {
listen 8080;
server_name myserver.com;
root /var/redmine/public;
...
}
Nginx を再起動。http://myserver.com:8080/
でサイトを開ける。Apache に Reverse Proxy の設定を追加して http://myserver.com/
でサイトを開くようにする。設定ファイルは以下の通り (Proxy の設定を青字で書いた)。
<VirtualHost *:80>
ServerName myserver.com
DocumentRoot /var/redmine/public
ProxyPass / http://myserver.com:8080/
ProxyPassReverse / http://myserver.com:8080/
</VirtualHost>
Apache を再起動すれば http://myserver.com/
でサイトが開く。
443 番ポート対応
まず Nginx 側のポート番号を 4443 にする。
server {
listen 4443;
server_name myserver.com;
root root /var/redmine/public;
ssl on;
ssl_certificate /my/path/to/ssl-cert.pem;
ssl_certificate_key /your/path/to/ssl-cert.key;
...
}
Nginx を再起動。https://myserver.com:4443/
で開ければ OK。http を https に変えるのを忘れるポカをしないこと (意外とハマる)。
4443 番ポートを指定するのは面倒。https://myserver.com/ で開きたい。まず、Apache で Reverse Proxy の設定を変更する (新変更点を青字で書いた)。
<VirtualHost *:443>
ServerName myserver.com
DocumentRoot /var/redmine/public
ProxyPass / https://myserver.com:4443/
ProxyPassReverse / https://myserver.com:4443/
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /my/path/to/ssl-certpem
SSLCertificateKeyFile /my/path/to/ssl-cert.key
</VirtualHost>
SSLProxyEngine
を on
にしていること、http を https に直していること、ポート番号をちゃんと指定すること、を注意。
Apache を再起動すれば、https://myserver.com/
で https://myserver.com:4443
にアクセスする。ポート番号不要になって幸せ。
No comments:
Post a Comment