колба не может получить реальный IP удаленного клиента - PullRequest
0 голосов
/ 27 января 2019

Я просто запускаю приложение фляги и не использую nginx и uwsgi, да, мой хост находится за блансером нагрузки.

Я пытаюсь прочитать все ключи, которые могут читать IP-адрес, но яфактический IP-адрес клиента не получается.

X-Real-IP меняется при каждом запросе, а X-Forwarded-For имеет только один IP-адрес, который является IP-адресом балансировщика нагрузки.

Та же проблемас бутылкой.Когда я запускал приложение напрямую из python app.py, я не смог получить реальный IP-адрес.Должно ли это использовать uwsgi и nginx для примера приложения для чтения IP?

Если я использую приведенную ниже конфигурацию и пересылаю uwsgi_param, я могу прочитать список IP-адресов в ответе.

Ниже wsgi_file.ini

[uwsgi] 
socket = 127.0.0.1:8000
plugin    = python
wsgi-file = app/app.py
process   = 3
callable = app

nginx.conf

server {
        listen 3000;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;


        location / {
                uwsgi_pass  0.0.0.0:8000; #unix:///tmp/uwsgi.sock;
                include        /etc/nginx/uwsgi_params;
                uwsgi_param X-Real-IP $remote_addr;
                uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
                uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;
        }
}

Я запустил сервер nginx и запустил приложение с помощью команды: uwsgi --ini wsgi_file.ini,

1 Ответ

0 голосов
/ 03 марта 2019

IP-адрес клиента можно получить в Flask с помощью request.remote_addr.

Обратите внимание, что если вы используете обратный прокси-сервер, балансировщик нагрузки или любой другой посредник между клиентом и сервером, то он будет возвращать IP-адрес последнего посредника, который отправляет запросы непосредственно на сервер Flask. , Если посредники включают заголовки X-Real-IP, X-Forwarded-For или Forwarded, вы все равно можете определить IP-адрес клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...