在uWSGI应用程序(烧瓶)中缺少nginx头文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在uWSGI应用程序(烧瓶)中缺少nginx头文件相关的知识,希望对你有一定的参考价值。

我的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;
  }
}
答案

我找到了解决方案。我只需要用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;

以上是关于在uWSGI应用程序(烧瓶)中缺少nginx头文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Uwsgi 和 Nginx 上使用 SocketIO 烧瓶

将 $ssl_client_s_dn 从 nginx/uwsgi 传递到烧瓶应用程序

uwsgi 和烧瓶 - 无法导入名称“appl”

烧瓶-SocketIO + uWSGI。与 Mule 工人一起发射

上游超时(uWSGI + NGINX + Flask)

使用flask和flask-socketio配置nginx、uwsgi