3 votes

Nginx reverse proxy et cloudflare - Envoyer le code pays à l'application backend

J'essaie de détecter le pays des visiteurs. J'ai coché l'option geoip dans le tableau de bord de cloudflare et cela ajoute un en-tête CF-IPCountry aux en-têtes de requête, mais je ne parviens pas à le transmettre à mon application dorsale via le proxy nginx. Qu'est-ce que je fais de mal ?

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
 }

EDIT : Le backend ne voit pas ce header. J'utilise Flask et j'ai créé une route pour afficher tous les en-têtes de la requête.

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

0 votes

Expliquez davantage les choses. Le backend ne voit pas du tout cet en-tête ? Il le voit mais avec une valeur inattendue ? Avez-vous vérifié que vous recevez bien cet en-tête dans votre instance Nginx ?

0 votes

J'ai mis à jour ma question. Le backend ne voit pas l'en-tête. Comment puis-je vérifier si nginx reçoit cet en-tête ?

0 votes

"Comment puis-je vérifier si nginx reçoit cet en-tête ?" soit plus de journalisation ou de renifler le trafic entrant, si c'est HTTP.

2voto

Michael Hampton Points 232226

Par défaut, nginx ignore les en-têtes HTTP qui contiennent des caractères de soulignement.

Vous avez :

    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit

Mais ça devrait l'être :

    proxy_set_header CF-IPCountry $http_cf_ipcountry; #this line is the culprit

0 votes

J'ai essayé, ça n'a pas résolu le problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X