6

Varnish 3 を Apache で構成しましたが、問題なく動作しています。ただし、Apache ログに記録されたクライアント IP を取得できません。私はいくつかの解決策をグーグルで試してみましたが、うまくいきませんでした。現在、私の Apache アクセス ログ ファイルは、クライアント IP アドレスではなくサーバー IP を記録しています。

あなたの親切な考慮のための私の構成は次のとおりです。

ワニス VCL: (/etc/varnish/default.vlc): http://pastebin.com/PuBqZ6fx

アパッチ構成

/etc/httpd/conf/httpd.conf

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined

アパッチ仮想ホスト

...... その他 ..... ErrorLog ログ/fr-error-log CustomLog ログ/fr-custom-log varnishcombined ...... その他 .....

注: インストールされているワニスのバージョンは varnish-3.0.2-1.el5.x86_64 です。

ありがとう。ラヒール

4

3 に答える 3

12

ペーストビンの例で機能する構成があったと思いますが、これで実際にうまくいくはずです:

if (req.restarts == 0) {
  if (req.http.X-Forwarded-For) {
    set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
  } else {
    set req.http.X-Forwarded-For = client.ip;
  }
}

あなたの vcl_recv{} で。

于 2012-04-05T12:06:28.870 に答える
10

コメントで言及されている OP のように、解決策は Apache モジュールです。Varnish はX-Forwarded-Forデフォルトでヘッダーを追加します。

次に、 mod_rpaf (Apache 2.2) または(Apache 2.4)のような apache モジュールmod_remoteipは、remote_ip 値をX-Forwarded-Forヘッダーによって渡された値に設定します。

これは、単に X-Forwarded-For ヘッダーの値を apache ログに記録するよりもはるかに堅牢なソリューションを提供します。たとえば、Varnish を介して、または直接、2 つの IP で同じサイトにアクセスでき、サイトは期待どおりに機能し、正しくログに記録されます。

于 2013-06-05T11:24:53.080 に答える
9

この行を vcl に追加します

sub vcl_recv {
  # Add a unique header containing the client address
  remove req.http.X-Forwarded-For;
  set    req.http.X-Forwarded-For = client.ip;

}

次に、Apacheのログフォーマットを変更します

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined

そして今、あなたの仮想ホストで

<VirtualHost *:8080>
  ServerName www.abc.com

  CustomLog /var/log/httpd/www.abc.com/access.log varnishcombined

</VirtualHost>
于 2012-12-19T00:53:59.507 に答える