我的python应用程序(Flask
)运行在uWSGI
(应用程序服务器)后面,并在Nginx
(http服务器)的前面运行,并打包在docker
容器中。我试图实现的是将真实IP地址从http服务器(Nginx
)转发到我的应用服务器(uWSGI
)。
要做,所以我在我的nginx配置中指定X-Real-IP
和X-Forwarded-For
标头。不幸的是,检查烧瓶的request.headers
我只能看到Host
标头,其余两个丢失。
相同的设置适用于gunicorn
,并且我的标题存在。知道怎么解决吗?
server {
listen 80;
server_name app.local;
## uWSGI setup for API
location /api {
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:///var/run/app.uwsgi.sock;
uwsgi_param Host $host;
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我找到了解决方案。我只需要用X-HEADERS
作为HTTP
的前缀。这是一个例子。
# From
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
# To
uwsgi_param HTTP_X-Real-IP $remote_addr;
uwsgi_param HTTP_X-Forwarded-For $proxy_add_x_forwarded_for;