Você precisa definir o proxy confiável . Nesse caso, getClientIp()
usará X-Forwarder-For
header para obter o endereço IP do cliente.
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;
}
}
Você precisa definir o proxy confiável . Nesse caso, getClientIp()
usará X-Forwarder-For
header para obter o endereço IP do cliente.
Tags nginx apache-2.4 ip-forwarding