Как читать параметры UWSGI в python / колбе, переданной из nginx
Я настроил python / flask / uwsgi+nginx web app, и он отлично работает. Я хочу использовать geoip, я установил его на стороне nginx:
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/qbaka-visit.sock;
...
uwsgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
}
но теперь я не знаю, как читать это свойство в python. До uwsgi я использовал простой колбу builtin webserver + nginx proxy_pass, в этом случае я использовал proxy_set_header X-Geo-Country $geoip_country_code;
и прочитайте этот аргумент, используя request.headers
, но для uwsgi params я не мог понять, как их читать.
1 ответов
uwsgi_param
устанавливает wsgi environ
ключ данного имени к приложению. Вы можете использовать это для заголовков, которые следуют соглашению CGI об использовании HTTP_
префикс. эквивалент вашего proxy_set_header
будет:
uwsgi_param HTTP_X_GEOIP_COUNTRY $geoip_country_code;
обратите внимание, что имя заголовка должно быть в верхнем регистре и с тире заменено подчеркиванием, чтобы быть распознано как допустимый заголовок в wsgi.
альтернативно, похоже, что окружающая среда доступна в колбе, как request.environ
, так что вы можете сохранить ваш uwsgi_param то же самое, но прочитайте его как request.environ['GEOIP_COUNTRY_CODE']
. Это, вероятно, предпочтительнее, поскольку вы можете отличить их от фактических заголовков запросов таким образом.