Obtendo o IP do cliente ao passar por um proxy reverso

3

No meu VPS estou hospedando vários sites. todos que vivem em seu próprio container Linux. Por exemplo

Site #1 -> 10.0.3.111

Site #2 -> 10.0.3.112

Site #3 -> 10.0.3.113

Para saber onde redirecionar cada solicitação, também tenho um proxy reverso nginx em outro contêiner Linux em 10.0.3.101

O problema que estou tendo é que em um dos meus sites, que está rodando o Laravel, eu tento pegar o IP do cliente, assim:

<p>IP Address: {{ Request::getClientIp() }}</p>

O problema é que estou recebendo o tempo todo 10.0.3.101 , em vez do IP do cliente.

Eu acho que o Laravel está recebendo o IP do último host onde o pedido foi pensado, não o inicial que iniciou o pedido.

Existe uma maneira de obter esse IP sem alterar essa estrutura?

Configurações

Este é o meu hostfile nginx:

server {
        listen 80;
        server_name example.com www.example.com;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://10.0.3.115;
        }
}
    
por Enrique Moreno Tent 06.08.2014 / 18:24

1 resposta

2

Você precisa definir o proxy confiável . Nesse caso, getClientIp() usará X-Forwarder-For header para obter o endereço IP do cliente.

    
por 07.08.2014 / 13:46