2016-12-20 2 views
1

Ich benutze Laravel 5.3 mit PHP7 auf einem EC2 hinter einem ELB und Cloudflare und ich habe ein kleines Problem mit TrustedProxy-Paket (https://github.com/fideloper/TrustedProxy).TrustedProxy erkennt keine Benutzer IP

Das Paket gibt mir den Benutzer Ip nicht.

In der vertrauten Konfigurationsdatei Ich habe so etwas wie diese

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', 
    ], 
]; 

(Ich habe versucht, mit ** auch)

Aber wenn ich so etwas wie $ request-> ip(), $ Anfrage- > getClientIp o getClientIps (am Ende verwenden alle diese Methode getClientIps()) die IP, die erscheint, ist die Proxy-IP.

Wenn ich die $ Anfrage drucken kann ich sehen:

Server Tasche:

... 
"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" 

Kopf Tasche:

"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) 
    ] 

Aber die $ request-> ip() $ request -> getClientIp und getClientIps geben die falsche IP (10.0.0.53) zurück.

Hat jemand eine Idee oder einen Anhaltspunkt?

Danke!

Antwort

2

Gelöst. Das Hauptproblem (und ein bisschen dumm) ist die Reihenfolge in der Middelwares. Ich benutzte die Informationen in einer Middleware, die vor dem Trustproxy ausgeführt wurde.