CONTENTS
バーチャルホストの設定
1つのWEBサーバーで複数のドメインを利用してWEBページを公開する場合には「NameVirtualHost 」ディレクティブを利用しドて振り分ける必要があります。
ドメインが複数なければこの設定は必要ありません。
1 |
# vi /etc/httpd/conf/httpd.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
▼「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
1 |
# vi /etc/httpd/conf/httpd.conf |
1 2 3 4 5 6 7 |
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」へのリダイレクト要求とされるのです。