我的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;
}
}
答案 0 :(得分:1)
我找到了解决方案。我只需要在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;