使用nginx反向代理服务器端接受到的80端口请求扔给本地跑的flask应用8001端口,结果在flask应用中如果直接使用request.remote_addr
拿到的地址都是127.0.0.1
, 经过一番探索, 发现不能用remote_addr
, 而应该用request.headers['X-Forwarded-For']
来获取客户端真实的IP地址, 下面附上相关配置和代码
nginx配置
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
flask获取客户端真实IP地址
from flask import request
real_ip = request.headers['X-Forwarded-For']