[英]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-IP
、 X-Forwarded-For
或Forwarded
標頭,那么您仍然可以找出客戶端的 IP 地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.