apache リバースプロキシの設定

プロキシモジュールの組み込み

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http_module libexec/mod_proxy_http.so

ディレクティブの設定方法

リバースプロキシ:www.hogehoge.com
バックエンドサーバ:backend.hogehoge.com
ProxyPassReverse /news/ http://backend.hogehoge.com/
※ProxyPass 公開パス 転送先URLの並びとなる。
※ProxyPass
リクエスト URL のマッピング
ここでは、http://www.hogehoge.com をhttp://backend.hogehoge.com/にマッピングさせている
※ProxyPassReverse
HTTP レスポンスの Location, Content-Location, URI-header を書き換えるために記述する。
※クッキーヘッダ等の操作も設定できるが、以下を参照してほしい。
apache2.2:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
apache2.4:http://httpd.apache.org/docs/current/en/mod/mod_proxy.html

備考

今回、以下構成を作成していた。
big-ip
   |
   |----|
   |    |
proxy  web
※proxyはx-servletを想定し、今回はapacheで作成した。
WEBサーバへの通信経路は下記のようにする
クライアント    bigip       proxy     web
      |---------->|           |        |
      |           |---------->|        |
      |           |           |        |
      |           |<----------|        |
      |           |           |        |
      |           |------------------->|
      |           |           |        |
      |           |<-------------------|
      |           |           |        |
      |<----------|           |        |
      |           |           |        |
      |           |           |        |
 
big-ip:192.168.1.3
proxy :192.168.153.130
web   :192.168.153.128
 
vs-ip1 :192.168.1.130
   →プロキシサーバへの通信
 
vs-ip2 :192.168.1.128
   →プロキシからウェブへの通信
このような構成の時ににクライアントIPをwebに渡すにはどうするか考えていた。
① big-ipでinsert X-Forwarded-Forを使用する。
② proxyで設定する。
①の方法は動的に読み込んでくれるし、設定が楽なため、採用。
②について
proxyが本当はx-servletで作成したかったことと、以下のような違いがあり、
本物でテストしないと意味がないため、不採用。
・apacheはリバースプロキシを使用すると、デフォルトでX-Forwarded-Forを付与してくれる。
・x-servletはデフォルトでX-Forwarded-Forは付与されない。
また、x-servletでX-Forwarded-Forを設定することもできるが、なんか難しそうだ。
そのため、apacheで作成したリバースプロキシで、X-Forwarded-Forを付与されないようにした。
しかし、apache2.2は付与されないようにできない。必ず付与されてしまう。
そのため、apache2.4をインストールした。
apache2.4だと、ProxyAddHeadersディレクティブがあり、offにすることが可能。
※デフォルトはOn
http://httpd.apache.org/docs/current/en/mod/mod_proxy.html#proxyaddheaders
これでproxyでは、X-Forwarded-Forは付与されなくなった。
vs-ip2で、insert X-Forwarded-Forをenableに変更すると、無事、クライアントIPが取得できるようになった。

このブログの人気の投稿

RAC環境でimpdpをパラレルで実行するとき

ctrl+s 操作が不能に

TrustedInstaller.exe メモリリーク