uWSGI 应用程序(flask)中缺少 nginx 标头

Luk*_*ski 0 nginx flask uwsgi docker

我的Python应用程序(Flask)运行在uWSGI(应用程序服务器)后面,(http服务器)前面Nginx,并打包在docker容器中。我试图实现的是将真实 IP 地址从 http 服务器 ( Nginx) 转发到我的应用程序服务器 ( uWSGI)。

为此,我在 nginx 配置中指定了 headers X-Real-IPX-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;
  }
}
Run Code Online (Sandbox Code Playgroud)

Luk*_*ski 5

我找到了解决方案。我只需在 myX-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;
Run Code Online (Sandbox Code Playgroud)

  • 这就是我所做的巫术:) (2认同)