用 nginx+Gunicorn 部署 Flask 应用,调整了 nginx 的配置很多次,重新编译安装 nginx ,也添加了 ngx_http_realip_module ,但是在 Flask 应用里获取到用户 ip 始终是 127.0.0.1.
* 如果前端去掉 nginx+Gunicorn, 直接跑 Flask 自带的 wsgi ,是可以成功获取用户的访问 ip 。
nginx 配置如下:
nginx version: nginx/1.8.0
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
configure arguments: --prefix=/usr/local/nginx --with-pcre=/usr/src/pcre-8.36 --with-http_realip_module
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
# set_real_ip_from 127.0.0.1;
# real_ip_header X-Forwarded-For;
# real_ip_recursive on;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.