uWSGI 应用程序(烧瓶)中缺少 nginx headers

Missing nginx headers in uWSGI application (flask)

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

要做,所以我在我的 nginx 配置中指定 X-Real-IPX-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;