如何读取从nginx传递的python / flask中的UWSGI参数

时间:2013-01-03 05:19:00

标签: python nginx flask uwsgi

我设置了python / flask / uwsgi + nginx web应用程序,它运行正常。我想使用geoip,我在nginx端设置它:

   location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/tmp/qbaka-visit.sock;
            ...
            uwsgi_param     GEOIP_COUNTRY_CODE $geoip_country_code;
    }

但是现在我不知道如何在python中读取这个属性。在使用uwsgi之前,我使用了简单的内置webserver + nginx proxy_pass,在这种情况下,我使用proxy_set_header X-Geo-Country $geoip_country_code;并使用request.headers读取此参数,但对于UWSGI参数,我无法弄清楚如何阅读它们。 / p>

1 个答案:

答案 0 :(得分:25)

uwsgi_param将给定名称的wsgi environ键设置为应用程序。您可以将此用于标头,这些标头遵循使用HTTP_前缀的CGI约定。相当于您的proxy_set_header

uwsgi_param HTTP_X_GEOIP_COUNTRY $geoip_country_code;

请注意,标题名称必须为大写,并且用下划线替换短划线,才能在wsgi中识别为有效标题。

另外,看起来环境可以在烧瓶中访问request.environ,因此您可以保持uwsgi_param相同,但将其读作request.environ['GEOIP_COUNTRY_CODE']。实际上,这可能是可取的,因为您可以通过这种方式将它们与实际请求标头区分开来。