На моем 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:
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;
}
}
Вам нужно установить доверенный прокси. В таком случае getClientIp()
буду использовать X-Forwarder-For
заголовок для получения IP-адреса клиента.