Назад | Перейти на главную страницу

Получение 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:

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-адреса клиента.