2017-05-23 6 views
0

私はすでにこのトピックに関する多くの記事を読んで、いくつかのソリューションを試しましたが、機能するスロットを見つけられませんでした。REMOTE_ADDR代わりにNginxリバースプロキシサーバーからユーザーからのIP

Apacheサーバの前にNginxリバースプロキシを設定しました。私のPHPアプリケーションは、REMOTE_ADDR関数を使用すると、代わりにNginxサーバーのIPを取得します。

私はApache 2.4.10を使用していますので、module_remoteip.cをインストールする必要があります。しかし、それは読み込まれていません。

したがって、私はrpaf_moduleをインストールしました。 phpinfo()mod_rpaf-2がロードされたモジュールと共に表示されているので、このモジュールが正しくインストールされているようです。このような

<IfModule rpaf_module> 
    RPAFenable On 
    RPAFsethostname On 
    RPAFproxy_ips 172.19.0.5 # ip of Nginx server 
    RPAFheader X-Forwarded-For 
</IfModule> 

私のnginxの設定を見て:

location/{ 
    proxy_set_header X-Real-Ip $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_pass 172.19.0.4; 
} 

ヘルプは高く評価され、私は次の内容の/etc/apache2/mods-available/rpaf.confファイルを修正しましたか?

答えて

1

あなたの訪問者のIPアドレスを使用すると、REMOTE_ADDRヘッダを交換したい場合は、あなたのnginxの設定でこれを試してみてください

$_SERVER['HTTP_X_REAL_IP']; 

代わりの

$_SERVER['REMOTE_ADDR']; 

を使用してアクセスする必要があります:「(ドン

location/{ 
    proxy_set_header X-Real-Ip $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_set_header REMOTE_ADDR $remote_addr; 
    proxy_pass 172.19.0.4; 
} 
+0

これは正しいですが、私は変更したくありません私のSymfony2のソースコードとそのコードの標準を保つ。 – Tom

+0

@Tom私は自分の答えを更新しました。 – thepieterdc

+0

あなたの例に変更してNginxとApacheをリセットした後も、NginxのIPアドレスを取得しています。 – Tom

関連する問題