Как читать параметры 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']. Это, вероятно, предпочтительнее, поскольку вы можете отличить их от фактических заголовков запросов таким образом.