13

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 です。

どうぞよろしくお願いいたします。

4

1 に答える 1

20

アクセス ログの client フィールドに 127.0.0.1 がまだ含まれていることを懸念していると思います。これはProxyPreserveHost; の影響を受けません。これは、Apache に接続されたネットワーク エンド ポイントの IP アドレスです。別のサーバーからのプロキシ接続の場合、これは常に localhost になります。

また、クライアントの元の IP を保持するのではなく、クライアントから送信されたヘッダーをProxyPreserveHost保持することについてです。Host言い換えれば、情報が目的に対して間違った方向に進んでいるということです。クライアントのIPではなく、クライアントから送信されたサーバーの名前を保持しています。

あなたの質問はこの質問と同じだと思います。構成で使用してX-Forwarded-For、ログにヘッダーを記録できるという追加のメモを追加します。%{X-Forwarded-For}iCustomLog

于 2013-03-18T00:36:01.387 に答える