Получение клиентского IP при прохождении через обратный прокси
В моем VPS я размещаю несколько сайтов. каждый живет в своем собственном контейнере Linux. Например
Сайт № 1 -> 10.0.3.111
Сайт № 2 -> 10.0.3.112
Сайт № 3 -> 10.0.3.113
Чтобы знать, куда перенаправлять каждый запрос, у меня также есть обратный прокси-сервер nginx в другом контейнере Linux в 10.0.3.101
У меня проблема в том, что на одном из моих сайтов, на котором работает Laravel, я пытаюсь получить IP-адрес клиента, например так:
<p>IP Address: {{ Request::getClientIp() }}</p>
Проблема в том, что я получаю все время 10.0.3.101
, а не IP клиента.
Я предполагаю, что Laravel получает IP-адрес последнего хоста, на который пришел запрос, а не начального, который начал запрос.
Есть ли способ, которым я мог бы получить этот IP, не меняя эту структуру?
Конфигурации
Это мой nginx hostfile:
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;
}
}
1 ответ
Вам нужно установить доверенный прокси. В таком случае getClientIp()
буду использовать X-Forwarder-For
заголовок, чтобы получить IP-адрес клиента.