2012-01-26 2 views
1

私は、nginxプロキシの後ろにApacheサーバを設定しようとしています。 nginxとapacheインスタンスは2つの異なるホストにあります。 両方のサーバがdebian squeezeを実行しています。 apacheのホスト(192.168.1.1)、/etc/apache2/mods-enabled/rpaf.confオン本当のクライアントIPを表示するためにnginxとapacheを連携させるにはどうすればいいですか?

私は前のサーバ(192.168.1.30)のnginx.confでこれを持って

server { 

    listen 80; ## listen for ipv4 
    listen [::]:80 default ipv6only=on; ## listen for ipv6 

    server_name front.tld.org; #real hostname changed 

    access_log /var/log/nginx/localhost.access.log; 

    proxy_set_header Host    $host; 
    proxy_set_header X-Real-IP  $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

    location/{ 
     proxy_pass http://192.168.1.1:80; #local IP of the server running apache 
    } 

<IfModule mod_rpaf.c> 
RPAFenable On 
RPAFsethostname On 
RPAFproxy_ips 192.168.1.30 
RPAFheader X-Real-IP 
</IfModule> 

私は両方の再起動nginxとapache2サービス。 しかし、apache2で/var/log/apache2/access.log私はいつも実際のクライアントの代わりに192.168.1.30(プロキシ)から発信元IPを持っています。

間違い有りますか?どのようにデバッグするのか?

答えて

1

記録のために、Debian squeeze設定ファイルには奇妙なものがあります。

次configが働いた:

RPAFenable On 
RPAFsethostname On 
RPAFproxy_ips 172.27.6.74 172.27.7.17 127.0.0.1 ::1 
RPAFheader X-Forwarded-For 

(私は<IfModule mod_rpaf.c>を削除する必要がありました)

+0

は、この問題を修正感謝を確認することができます:) –

0

現時点で正しいことは正しい動作です。アプリケーション(Apache上で実行される)だけが実際のIPを参照するためです。たとえば、WordPressなどのサンプルアプリケーションをインストールし、Piwikなどのリアルタイム分析をインストールします。 WordPressのフッターにPiwikコードを挿入し、ログアウト後にWordPressサイトにアクセスしてください。 Piwikは、RPAFproxy_ipsに設定されているものではなく、実際のIPを表示します。

関連する問題