2 votes

Activer à la fois X-Real-IP et X-Forwarded-For dans Nginx

Comment activer à la fois X-Real-IP et X-Forwarded-For dans Nginx ? J'ai actuellement ce qui suit pour obtenir des IP réelles dans le réseau Docker.

set_real_ip_from  172.18.0.0/32;
real_ip_header    X-Real-IP;
real_ip_recursive on;

J'aimerais également faire passer des IP réelles de Cloudflare aux conteneurs Docker. Comment puis-je utiliser à la fois X-Real-IP et X-Forwarded-For dans la même configuration, un ensemble d'IP pour X-Real-IP et un ensemble d'IP pour X-Forwarded-For ?

2voto

Michael Hampton Points 232226

Si vous essayez d'obtenir des adresses IP réelles derrière CloudFlare, vous devriez plutôt utiliser leur propre en-tête, CF-Connecting-IP. Vous devez ignorer les autres en-têtes si vous ne les avez pas générés vous-même, car ils peuvent être falsifiés par le client.

real_ip_header CF-Connecting-IP;

0voto

BigEd Points 41
  1. Essayez carte les ping (ne fonctionne pas) :

    map $remote_addr $real_header {
      default X-Real-IP;
      172.18.0.1 X-Forwarded-For;
    }
    
    server {
      real_ip_header $real_header;
    }
  2. Essayez de séparer ces flux sur différents serveurs. Selon le manuel, real_ip_header peut être défini par serveur ou emplacement, donc vous pouvez le faire :

    server {
      listen :8080;
      real_ip_header X-Real-IP;
      include "/all/other/stuff.conf";
    }
    
    server {
      listen :8081;
      real_ip_header X-Forwarded-For;
      include "/all/other/stuff.conf";
    }
  3. Pour jouer avec les emplacements, il faudra utiliser beaucoup plus de sucre syntaxique pour les séparer et vous devrez probablement utiliser des "si", mais ils sont les suivants maléfique . Mais je pense qu'il est tout à fait possible de créer deux emplacements internes avec une réécriture interne manuelle entre ces deux emplacements. Ceci sera totalement caché à l'utilisateur.

  4. Je suppose que jouer avec Lua pourrait aussi aider, mais essayez d'abord les suggestions précédentes.

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