バーチャルホストの設定
1つのWEBサーバーで複数のドメインを利用してWEBページを公開する場合には「NameVirtualHost 」ディレクティブを利用しドて振り分ける必要があります。
ドメインが複数なければこの設定は必要ありません。
command # vi /etc/httpd/conf/httpd.conf
メモ
▼「hoge1.com」の設定
ServerAdmin info@hoge1.com
DocumentRoot /home/hoge1/public_html
ServerName hoge1.com
ErrorLog logs/error_log
CustomLog logs/access_log common
SetEnvIf Request_URI "\.(gif)|(jpeg)|(jpg)|(png)|(ico)$" no_log
▼「hoge2.com」の設定
ServerAdmin info@hoge2.com
DocumentRoot /home/hoge2/public_html
ServerName hoge2.com
ErrorLog logs/error_log
CustomLog logs/access_log common
SetEnvIf Request_URI "\.(gif)|(jpeg)|(jpg)|(png)|(ico)$" no_log
リバースプロキシ
hoge1の特定ディレクトリ配下のアクセスを別のサーバーのアドレスに転送する場合に利用します。
「/home/hoge1/public_html/blog」」の「/blog/」配下にアクセスしたら別のhttpdサーバーで処理をさせる例で解説します。
尚、転送された先のサーバーのことをバックエンドサーバーと呼びます。
クライアント <===> httpd <===> Backendのhttpd
command # vi /etc/httpd/conf/httpd.conf
httpd.conf
ProxyRequests Off
SSLProxyEngine on
<Location /blog/>
ProxyPass http://192.168.0.50/blog/
ProxyPassReverse http://192.168.0.50/blog/
</Location>
▼上記の場合は動作
「/ドキュメントルート/blog/」にアクセスしたら「http://192.168.0.80/blog/」のWEBサーバーに転送されます。
その後クライアントとサーバーのやり取りは、リダイレクトと違い2台のWEBサーバーで処理されます。
▼設定内容の説明
ProxyRequests | オープンに公開されたプロキシはセキュリティー的に危ないのでOFFにする。 |
SSLProxyEngine | SSL接続でのプロキシを有効化。 |
Location | ディレクトリ単位のコンテナの設定を定義。 |
ProxyPass | バックエンドサーバーのアドレス。 |
ProxyPassReverse | バックエンドでさらにリダイレクトが発生した際のURLの調整を行うアドレス。 |
例えばバックエンド側でURLを整形して「http://192.168.0.50/blog/file.html/」にリダイレクトさせる処理がクライアント側へ応答された場合、クライアントは直接そのアドレスにアクセスしますが、『192.168.0.50』ローカルアドレスのためクライアントPC側のローカルネットワークにアクセスしようとするため、WEBサーバーには接続されません。
このような状況を防ぐために「http://192.168.0.50/blog/」のリダイレクト要求があった際に、「http://hoge1.com/blog/」に調整され、クライアント側へは「http://hoge1.com/blog/file.html」へのリダイレクト要求とされるのです。