我设置了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参数我无法弄清楚如何读取它们。
uwsgi_param
将给定名称的wsgi environ
键设置为应用程序。 您可以将此用于标头,它遵循使用HTTP_
前缀的CGI约定。 相当于你的proxy_set_header
是:
uwsgi_param HTTP_X_GEOIP_COUNTRY $geoip_country_code;
请注意,标题名称必须大写,并用下划线替换破折号,以在wsgi中将其识别为有效标题。
另外,看起来环境可以在flask中作为request.environ
访问,所以你可以保持你的uwsgi_param相同,但是把它作为request.environ['GEOIP_COUNTRY_CODE']
读取。 这实际上可能是可取的,因为你可以通过这种方式将它们与实际的请求标题区分开来。