人生は、お天気いろいろ

日々の生活やプログラミング等に関するメモ・雑文を記載しています

Apache mod_rewriteとリバースプロキシ

自分用メモ。

 

Apachemod_rewriteしてリバースプロキシをする際にハマった。

 

mod_rewriteの引数である[P]は、評価結果をmod_proxyに渡してくれる。

つまり[P]を付けただけではリバースプロキシをしてくれるわけではない。

 

以下、mod_rewriteしてリバースプロキシをさせた際のサンプル。

 

 

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

 

# ログ出力

RewriteLog C:/Apache2/logs/rewrite.log
RewriteLogLevel 9

<IfModule mod_rewrite.c>

 RewriteEngine On
 

 RewriteCond %{HTTP_HOST} example\.co\.jp
 RewriteRule ^/(.*)$ http://example.co.jp/personality/ [P,L]
</IfModule>

 

<IfModule mod_proxy.c>
 ProxyRequests On
</IfModule>

 

<VirtualHost *:80>
 ServerName example.co.jp

 ProxyPass / http://www.〇〇〇.co.jp/
 ProxyPassReverse / http://www.〇〇〇.co.jp/
</VirtualHost>

 

これでexample.co.jpでアクセスするとlocalhostへとび、

mod_rewriteによりexample.co.jp/personality/に変換。

その後、リバースプロキシによりexample.co.jpの部分が

http://www.〇〇〇.co.jp/に変換され、

最終的にhttp://www.〇〇〇.co.jp/personality/となる。

 

リバースプロキシの設定によりブラウザ上では

http://example.co.jp/personality/と表示される。

 

※ hostsファイルを書き換え、exmaple.co.jpがlocalhostを向くようにしている。