2017-02-06 3 views
0

Я запускаю обратный прокси-сервер nginx в контейнере докера. И бэкенд - это сервер Apache, запущенный на хосте, который прослушивает порт 10082. Laravel обрабатывать запрос. И я используюNginx proxy pass real ip не работает

$request->getClientIp()

получить реальный IP. Тем не менее, результат посещения сервера http://myip:10082 напрямую без конфликтов прокси с результатом посещения его обратным прокси.

Тест-код в Laravel:

echo $request->ip().'<br>'; 
echo $request->headers->get('X-Real-IP').'<br>'; 
echo $request->getClientIp().'<br>'; 

Результат с прокси:

192.168.80.2 
218.205.17.167 
192.168.80.2 

Результат без доверенности (XX.XXX.236.29 мой реальный IP):

XX.XXX.236.29 

XX.XXX.236.29 

Конфигурация nginx:

server { 
    listen  80; 
    server_name myserver.com; 

    access_log logs/myserver.access.log main; 


    location/{ 
     proxy_pass http://myip:10082; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

} 

Я так смущен. Может ли кто-нибудь помочь мне решить эту проблему. Благодаря!

+0

Отъезд: http://stackoverflow.com/a/41748592/7377984 и https://github.com/fideloper/TrustedProxy – Paras

ответ

1

Поскольку вы установили заголовок X-Real-IP в свой прокси nginx, это реальный ip.

+0

Но результат конфликтует с моим реальным ip .... –

Смежные вопросы