proxy_set_header X-Forwarded-For $http_x_forwarded_for;
}
5
1
7
}
11
9
4
proxy_set_header Host $http_host;
2
upstream app_server {
server {
13
proxy_redirect off;
但是最近由于运维架构的是采用 haproxy + nginx + uwsgi 是形式,导致了在 uwsgi 应用程序中获取到的 ip 都是 haproxy 的。
经过实验将 nginx 的配置改为如下即可:
12
为了要获取到真实的ip地址,需要由 haproxy 将 ip 传给 nginx,网页游戏私服,再由 nginx 传给 uwsgi。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在网上搜索了半天 haproxy 的相关配置,感觉太复杂了。因此还是决定从 nginx 入手。server unix:///tmp/gunicorn.sock fail_timeout=0;
proxy_pass ;
server_name localhost;
14
8
location / {
6
15
2
1
listen 80;
3
10
之前在部署在 nginx + uwsgi 应用时都是通过如下方法来获取真实的客户端ip的:
}
3
proxy_set_header Host $http_host;
这样在 uwsgi 的应用程序中只需要读取 http headers 中的 X-Forwarded-For 字段即可。