Proxy reverso Nginx e cloudflare - Envie o código do país para o aplicativo de back-end

1

Estou tentando detectar o país dos visitantes. Eu tenho a opção geoip marcada no painel cloudflare e ela adiciona um cabeçalho CF-IPCountry para solicitar cabeçalhos, mas não consigo transmiti-lo para meu aplicativo back-end por meio do proxy nginx. O que estou fazendo errado?

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
 }

EDITAR: O back-end não vê esse cabeçalho. Estou usando o balão e fiz uma rota para gerar todos os cabeçalhos de solicitação.

@app.route('/headers')
def header():
    headers = request.headers
    header_list = []
    for h in headers:
        header_list.append(h)
    return jsonify(header_list)
    
por kemist 19.07.2018 / 00:41

1 resposta

0

Por padrão, o nginx ignora os cabeçalhos HTTP que contêm sublinhados.

Você tem:

    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit

Mas isso deve ser:

    proxy_set_header CF-IPCountry $http_cf_ipcountry; #this line is the culprit
    
por 19.07.2018 / 00:55