2016-12-20 2 views
1

ELB와 Cloudflare 뒤에있는 EC2에서 PHP7과 함께 Laravel 5.3을 사용하고 있는데 TrustedProxy 패키지 (https://github.com/fideloper/TrustedProxy)에 약간의 문제가 있습니다.TrustedProxy가 사용자 IP를 감지하지 못합니다.

패키지가 사용자에게 IP를 제공하지 않습니다. 신뢰할 수있는 config 파일에서

나는 (너무 ** 내가 함께 노력)이

return [ 
    'proxies' => '*', 
    'headers' => [ 
     \Illuminate\Http\Request::HEADER_CLIENT_IP => 'X_FORWARDED_FOR', 
     \Illuminate\Http\Request::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST', 
     \Illuminate\Http\Request::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO', 
     \Illuminate\Http\Request::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT', 
    ], 
]; 

같은 것이

을하지만> IP를() $ 요청 - 같은 일을 할 때, $ 요청 - > getClientIp getClientIps (이 메소드는 모두 getClientIps()를 사용하고 있습니다.) 나타나는 IP는 프록시 IP입니다. 나는 $ 요청을 인쇄 할 경우

나는 볼 수

서버 가방 :

... 
"HTTP_X_FORWARDED_PROTO" => "https" 
"HTTP_X_FORWARDED_PORT" => "443" 
"HTTP_X_FORWARDED_FOR" => "XX.XX.XX.XX" (I removed the real IP) 
... 
"REMOTE_ADDR" => "10.0.0.53" 

헤더 가방 :

"x-forwarded-proto" => array:1 [ 
    0 => "https" 
    ] 
    "x-forwarded-port" => array:1 [ 
    0 => "443" 
    ] 
    "x-forwarded-for" => array:1 [ 
    0 => "XX.XX.XX.XX" (I removed the real IP) 
    ] 

그러나 $ 요청 -> IP(), $ 요청 -> getClientIp 및 getClientIps가 잘못된 IP (10.0.0.53)를 반환합니다.

누구나 아이디어 나 단서가 있습니까?

감사합니다.

답변

2

해결되었습니다. 주된 문제는 (그리고 약간 어리석은) 중간 단계의 순서입니다. 나는 trustproxy 전에 실행 된 미들웨어에서 정보를 사용하고 있었다.

관련 문제