簡體   English   中英

燒瓶無法獲得遠程客戶端的真實IP

[英]flask not able to get the real ip of the remote client

我只是運行一個燒瓶應用程序,而不是使用 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

配置文件

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。

客戶端的 IP 地址可以在 Flask 中通過request.remote_addr

請注意,如果您在客戶端和服務器之間使用反向代理、負載均衡器或任何其他中介,那么這將返回最后一個中介的 IP 地址,該中介將請求直接發送到 Flask 服務器。 如果中介包含X-Real-IPX-Forwarded-ForForwarded標頭,那么您仍然可以找出客戶端的 IP 地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM