2016-12-10 4 views
0

問題はPHPのフィールド$_SERVER['HTTP_CLIENT_IP']が私の次のサイト構造に設定されていないため、これをどのように修正する必要がありますか? '戻る' という名前(CloudFlareの背後にあるホスト上)ドッカーブリッジネットワーク上のCloudflare/Docker/NGINX/LAMPサイトで失われたクライアントIPアドレスを停止する方法はありますか?

静的IPコンテナ:コンテナ内で実行

  1. nginxの(172.24.02)
  2. コンテナ内のApache + PHP( 172.24.0.3)

nginx.conf:

location/{ 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_pass http://172.24.0.3; 
} 

test.phpを

<?php 

echo('HTTP_CLIENT_IP: '.$_SERVER['HTTP_CLIENT_IP']); 
echo('<br>HTTP_X_FORWARDE‌​D_FOR'.$_SERVER['HTTP_X_FORWARDE‌​D_FOR']); 
echo('<br>REMOTE_ADDR'.$_SERVER['REMOTE_ADDR']); 
echo('<br>HTTP_X_FORWARDED'.$_SERVER['HTTP_X_FORWARDED']); 
echo('<br>HTTP_FORWARDED'.$_SERVER['HTTP_FORWARDED']); 
echo('<br>HTTP_FORWARDED_FOR'.$_SERVER['HTTP_FORWARDED_FOR']); 

?> 

実行上記の利回り:$ _SERVER変数をプリントアウトの提案を行うための@Devonへ

HTTP_CLIENT_IP: 
HTTP_X_FORWARDE‌​D_FOR: 
REMOTE_ADDR: 172.24.0.2 
HTTP_X_FORWARDED: 
HTTP_FORWARDED: 
HTTP_FORWARDED_FOR: 
+0

どのようにNginxとApacheを連携させるように設定しましたか? – Devon

+2

HTTP_CLIENT_IPは標準ヘッダーではなく、REMOTE_ADDRはIPの標準ですが、プロキシの状況ではヘッダーを設定する必要があります。定義されているヘッダーと必ずしも一致しないものを印刷するのではなく、すべてのヘッダー 'print_r($ _ SERVER)'を印刷しないでください。 – Devon

+0

@Devon Apacheは1つのコンテナ内のポート80上で動作しています.nginxは、単に上記の設定でリクエストを転送して、ヘッダを渡します。私は、変数全体を印刷してあなたの提案を試みるつもりです – James

答えて

1

おかげで、次のフィールドが持っていたが判明しますクライアントIP:

$_SERVER['HTTP_CF_CONNECTING_IP'] 
$_SERVER['HTTP_X_FORWARDED_FOR'] 

最初にclient IP、2番目に与えたのはclient IP, cloudflare IP

関連する問題