プロキシされたバックエンドが元の呼び出し元のホスト名を受信することを確認するためにProxyPreserveHost On
の使用に言及しているWebで多くの人が目にします。これを使用して、Webアプリケーションのセキュリティ(Java、Tomcat)を強化していますが、ユーザーの実際の場所がログに表示されているとよいでしょう。私のTomcatログはこれを示しています-かなり役に立たない:
127.0.0.1 - - [17/Mar/2013:06:32:13 +0100] "GET /webapp/frontend/app/partials/welcome.html HTTP/1.1" 200 54
これは明らかに私の期待どおりに動作しない設定です:
「/ etc/Apache2/sites-enabled/000-default」
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /webapp http://localhost:8080/webapp
ProxyPassReverse /webapp http://localhost:8080/webapp
RewriteEngine On
RewriteRule ^/$ /webapp/frontend/app/ [proxy]
RewriteRule ^/webapp/$ /webapp/frontend/app/ [redirect]
RewriteRule ^/webapp/app/$ /webapp/frontend/app/ [redirect]
(ここから000-default
にあったデフォルトのものに)
有効なモジュール:
Sudo a2enmod proxy
Sudo a2enmod proxy_http
Sudo a2enmod rewrite
これは、Apache HTTPD 2.2.22を実行しているUbuntu 12.10です。
あなたの助けをいただければ幸いです。
あなたの懸念はあなたのアクセスログがまだクライアントフィールドに127.0.0.1を含んでいることだと思います。これはProxyPreserveHost
の影響を受けません。これは、Apacheに接続したネットワークエンドポイントのIPアドレスです。別のサーバーからのプロキシ接続の場合、これは常にlocalhostになります。
また、ProxyPreserveHost
は、クライアントが送信したHost
ヘッダーを保持することであり、クライアントの元のIPを保持することではありません。言い換えれば、それはあなたの目的のために間違った方向に進んでいる情報に関するものです。クライアントのIPではなく、クライアントから送信されたサーバーの名前が保持されます。
あなたの質問は この質問 と同じだと思います。ログに記録できるという追加のメモを追加しますX-Forwarded-For
を使用したログのヘッダー%{X-Forwarded-For}i
をCustomLog
構成に追加します。