01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2009-06-22 Mon
■ Apache でバーチャルホスト運用時の Proxy の設定 [Apache]
referer でアクセス制限をかけているサイトの RSS を購読していると、
画像が表示されず残念な思いをします。
そこで、リクエストヘッダーの書換で、アクセス制限を回避します。
Apache の mod_proxy を使ってみます。
mod_proxy と mod_proxy_http を組み込む
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
フォワードプロキシを使う。
ProxyRequests On
すべてのサイトへのアクセス制限
<Proxy *> Order Deny,Allow Deny from all Allow from 192.168.0 </Proxy>
特定のサイトに対するリクエストヘッダの書換とアクセス制限を、
<Proxy example.com> Order Deny,Allow Deny from all Allow from 192.168.0 RequestHeader unset referer </Proxy>
このように設定してしまうと、
ほかのサイトに対するアクセス制限は設定されません。
そこで、すべてのサイトに対するアクセス制限と、
特定のサイトに対するリクエストヘッダの書換をするには、
<Proxy *> Order Deny,Allow Deny from all Allow from 192.168.0 SetEnvIf Host example\.com unset_Referer RequestHeader unset Referer env=nset_Referer </Proxy>
このようにします。
以上の設定で、プロキシとして使うことができます。
バーチャルホストで運用しているマシンにプロキシ用のホストを追加する場合、
以下のように設定すると、デフォルトのバーチャルホストにマッチしてしまいます。
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.example.com DocumentRoot /www/example1 ... </VirtualHost> <VirtualHost *:80> ServerName www2.example.com DocumentRoot /www/example2 ... </VirtualHost> <VirtualHost *:80> ServerName proxy.example.com ... </VirtualHost>
これは、 Host: ヘッダが SrverName に一致しないために起こります。
そこで、別のポート番号をプロキシ用に割り当てて待ち受けるようにします。
Listen 8080 NameVirtualHost *:8080 <VirtualHost *:8080> ServerName proxy.example.com ... </VirtualHost>