Обратный прокси-сервер Nginx и облачная вспышка - Отправить код страны в серверное приложение

Я пытаюсь определить страну посетителей. У меня есть опция geoip, отмеченная в тире cloudflare, и она добавляет заголовок CF-IPCountry для заголовков запросов, но я не могу передать это своему бэкэнд-приложению через прокси-сервер nginx. Что я делаю не так?

location / {
    # forward application requests to the gunicorn server
    proxy_pass http://localhost:8080;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit
 }

РЕДАКТИРОВАТЬ: Серверная часть не видит этот заголовок. Я использую flask и проложил маршрут для вывода всех заголовков запросов.

@app.route('/headers')
def header():
    headers = request.headers
    header_list = []
    for h in headers:
        header_list.append(h)
    return jsonify(header_list)
2
задан 19 July 2018 в 02:47
1 ответ

По умолчанию nginx игнорирует заголовки HTTP которые содержат символы подчеркивания.

У вас:

    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit

Но это должно быть:

    proxy_set_header CF-IPCountry $http_cf_ipcountry; #this line is the culprit
0
ответ дан 3 December 2019 в 13:54

Теги

Похожие вопросы