uWSGI 应用程序(烧瓶)中缺少 nginx headers
Missing nginx headers in uWSGI application (flask)
我的python应用程序(Flask
)运行在uWSGI
(应用服务器)的后面,在Nginx
(http服务器)的前面,并且打包在docker
容器。
我试图实现的是将真实 IP 地址从 http 服务器 (Nginx
) 转发到我的应用程序服务器 (uWSGI
)。
要做,所以我在我的 nginx 配置中指定 X-Real-IP
和 X-Forwarded-For
headers。不幸的是,检查烧瓶的 request.headers
我只能看到
Host
header 剩下两个不见了。
同样的设置适用于 gunicorn
,我的 header 也出现了。知道如何解决吗?
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;
我的python应用程序(Flask
)运行在uWSGI
(应用服务器)的后面,在Nginx
(http服务器)的前面,并且打包在docker
容器。
我试图实现的是将真实 IP 地址从 http 服务器 (Nginx
) 转发到我的应用程序服务器 (uWSGI
)。
要做,所以我在我的 nginx 配置中指定 X-Real-IP
和 X-Forwarded-For
headers。不幸的是,检查烧瓶的 request.headers
我只能看到
Host
header 剩下两个不见了。
同样的设置适用于 gunicorn
,我的 header 也出现了。知道如何解决吗?
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;