2017-04-26 19 views
2

我正在運行一個Elastic Beanstalk環境,一個負載平衡器以及運行symfony2應用程序的實例。PHP服務器無法找到真實的IP

我不能讓真正的訪問者的IP地址,$請求 - > getClientIP()返回null,如果我將其設置爲信任代理在app.php,像這樣:

支持:: setTrustedProxies(陣列($請求 - >服務器 - >的get( 'REMOTE_ADDR')));

我得到奇怪的組播地址:

172.31.25.85

172.31.25.85

172.31.42.183

等。

這裏是我的SSL SSL終止。 conf

ProxyPass/http://localhost:80/ retry=0 
ProxyPassReverse/http://localhost:80/ 
ProxyPreserveHost on 
RequestHeader set X-Forwarded-Proto "https" early 

這裏是我的$ _ SERVER

Array (
    [REDIRECT_COMPOSER_HOME] => /root 
    [REDIRECT_PHP_MEMORY_LIMIT] => 512M 
    [REDIRECT_PHP_MAX_EXECUTION_TIME] => 60 
    [REDIRECT_PHP_DISPLAY_ERRORS] => Off 
    [REDIRECT_PHP_COMPOSER_OPTIONS] => 
    [REDIRECT_PHP_ALLOW_URL_FOPEN] => On 
    [REDIRECT_PHP_ZLIB_OUTPUT_COMPRESSION] => Off 
    [REDIRECT_PHP_DOCUMENT_ROOT] => /web/ 
    [REDIRECT_PHP_DATE_TIMEZONE] => UTC 
    [REDIRECT_STATUS] => 200 
    [COMPOSER_HOME] => /root 
    [PHP_MEMORY_LIMIT] => 512M 
    [PHP_MAX_EXECUTION_TIME] => 60 
    [PHP_DISPLAY_ERRORS] => Off 
    [PHP_COMPOSER_OPTIONS] => 
    [PHP_ALLOW_URL_FOPEN] => On 
    [PHP_ZLIB_OUTPUT_COMPRESSION] => Off 
    [PHP_DOCUMENT_ROOT] => /web/ 
    [PHP_DATE_TIMEZONE] => UTC 
    [HTTP_HOST] => c.filtered.com 
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0 
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5 
    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br 
    [HTTP_REFERER] => https://c.filtered.com/da/c/filtered 
    [HTTP_COOKIE] => PHPSESSID=gcrn9sfbq1rhkactkau6s5fbn2; hl=da; returning_visitor=1; __utma=84468683.1790758543.1493197744.1493197744.1493207849.2; __utmc=84468683; __utmz=84468683.1493207849.2.2.utmcsr|utmccn=(
    referral 
    )|utmcmd=referral|utmcct=/da/; PAPVisitorId=2491e88a40a6a8d0b2918dOIatw1xtp9; __utmb=84468683.1.10.1493207849; __utmt=1 
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1 
    [CONTENT_TYPE] => application/x-www-form-urlencoded 
    [HTTP_X_FORWARDED_PROTO] => https 
    [HTTP_X_FORWARDED_FOR] => 172.31.25.85 
    [HTTP_X_FORWARDED_HOST] => c.filtered.com 
    [HTTP_X_FORWARDED_SERVER] => c.filtered.com 
    [HTTP_CONNECTION] => Keep-Alive 
    [CONTENT_LENGTH] => 253 
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin 
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache 
    [SERVER_NAME] => c.filtered.com 
    [SERVER_ADDR] => 127.0.0.1 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 127.0.0.1 
    [DOCUMENT_ROOT] => /var/www/html/web/ 
    [REQUEST_SCHEME] => http 
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => /var/www/html/web/ 
    [SERVER_ADMIN] => [email protected] 
    [SCRIPT_FILENAME] => /var/www/html/web/app.php 
    [REMOTE_PORT] => 54638 
    [REDIRECT_URL] => /da/c/filtered 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => POST 
    [QUERY_STRING] => 
    [REQUEST_URI] => /da/c/filtered 
    [SCRIPT_NAME] => /app.php 
    [PHP_SELF] => /app.php 
    [REQUEST_TIME_FLOAT] => 1493208003.205 
    [REQUEST_TIME] => 1493208003 
) 
+0

網站說明:'print_r()'插入換行符。您可能需要檢查HTML源代碼才能看到它們(在某些Windows瀏覽器中按Ctrl + U)。 –

+0

這是通過記錄器插入 –

+0

好的,我已經使用http://phillihp.com/toolz/php-array-beautifier/php-beautifier-v2/然後 –

回答

0

您可以使用此功能,獲得真正的IP轉儲,有時$_SERVER["REMOTE_ADDR"]沒有表現出真正的IP所以需要定製,以獲得真正的IP。

function getRealIP() 
    { 
     if (isset($_SERVER["HTTP_CLIENT_IP"])) { 
      $ip = $_SERVER["HTTP_CLIENT_IP"]; 
     } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { 
      $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
     } elseif (isset($_SERVER["HTTP_X_FORWARDED"])) { 
      $ip = $_SERVER["HTTP_X_FORWARDED"]; 
     } elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])) { 
      $ip = $_SERVER["HTTP_FORWARDED_FOR"]; 
     } elseif (isset($_SERVER["HTTP_FORWARDED"])) { 
      $ip = $_SERVER["HTTP_FORWARDED"]; 
     } else { 
      $ip = $_SERVER["REMOTE_ADDR"]; 
     } 

     // Strip any secondary IP etc from the IP address 
     if (strpos($ip, ',') > 0) { 
      $ip = substr($ip, 0, strpos($ip, ',')); 
     } 
     return $ip; 
    } 
+2

這不是OP詢問的關於 – hassan

+0

有沒有真正的IP存在,請看看 –

+0

如果IP不存在於$ _SERVER轉儲中,它不存在 –

相關問題