概要
今まで1つドメインで1台のWEBサーバーを動かしていた。今回ドメインを増やしたが、今までのWEBサーバーとは別の端末にアクセスするようにしたかった。ブロードバンドルーターのNATでできないか調べたところ、ドメイン名で振り分ける機能はなかった。そのためブロードバンドルーターのNAT設定はそのままにし、既存のWEBサーバーのApacheでリバースプロキシを設定する事とした。
最初に思いついてボツになった方法
Apacheでリバースプロキシを設定する方法
リバースプロキシの設定(192.168.0.1側)
hostsにdevelop.ddns.netを追加
今回のWEBサーバーはWindows機なので
C:\Windows\System32\drivers\etc\hosts
にdevelop.ddns.netを追加
\Windows\System32\drivers\etc\hosts
192.168.0.2 develop.ddns.net
Apacheの設定
httpd.confの確認
apache\conf\httpd.conf
#次の3つのモジュールが有効になっている事を確認
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so
HTTP接続用の設定
develop.ddns.net用のVirtualHostを追加
apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
ServerName develop.ddns.net:80
ProxyPreserveHost On
ProxyPass / http://develop.ddns.net/
ProxyPassReverse / http://develop.ddns.net/
ProxyPassReverseCookieDomain develop.ddns.net public.develop.ddns.net
ProxyPassReverseCookiePath / /
</VirtualHost>
SSL接続用の設定
develop.ddns.net用のVirtualHostを追加
HTTP接続に比べてSSLEngine、証明書、SSLProxyEngineの設定が増えている
apache\conf\extra\httpd-ssl.conf
<VirtualHost *:443>
ServerName develop.ddns.net:443
SSLEngine on
#develop.ddns.net用のLet's Encryptの証明書
SSLCertificateFile "conf/certs/develop.ddns.net-crt.pem"
SSLCertificateKeyFile "conf/certs/develop.ddns.net-key.pem"
SSLCertificateChainFile "conf/certs/develop.ddns.net-chain.pem"
SSLProxyEngine On
ProxyPreserveHost On
ProxyPass / https://develop.ddns.net/
ProxyPassReverse / https://develop.ddns.net/
ProxyPassReverseCookieDomain develop.ddns.net example.develop.ddns.net
ProxyPassReverseCookiePath / /
</VirtualHost>
192.168.0.2側の設定
リバースプロキシ経由での接続に対応させるための特別な設定は必要ない
develop.ddns.netでアクセスされた時の記述を通常通り行えばよい
SSL証明書のSSLCertificateFileはリバースプロキシを設定している側と同じものを指定した