uWSGI应用程式中缺少Nginx标头(烧瓶)

时间:2018-07-06 09:35:18

标签: docker nginx flask uwsgi

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

要做的是,因此我在nginx配置中指定了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;
  }
}

1 个答案:

答案 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;