Как читать параметры UWSGI в python/flask, переданные из nginx

Я установил веб-приложение python/flask/uwsgi + nginx, и он отлично работает. Я хочу использовать 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 я не мог понять, как их читать.

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