Comment enregistrer la valeur d'origine de $ remote_addr lors de l'utilisation de Real-IP


9

Mon environnement a des demandes d'utilisateurs passant par un certain nombre de systèmes:

[Client] -> [ELB] ---> [nginx] -> [web]

(ELB = AWS Elastic Load Balancer)

Grâce à cette réponse , j'ai nginx déterminant et passant la bonne adresse IP du client aux serveurs en amont (web) avec les en X-Forwarded-For- X-Real_IPtêtes et . La configuration nginx pertinente:

    real_ip_header      X-Forwarded-For;
    set_real_ip_from        10.0.0.0/8;
    real_ip_recursive   on;
    proxy_set_header X-Real-IP $remote_addr;

Mon problème est le suivant: le module Real IP dans nginx remplace la $remote_addrvariable existante par le résultat de ses X-Forwarded-Forcalculs. Cela me donne l'IP du client d'origine, mais je perds l'adresse IP du système qui a réellement envoyé la demande au proxy (c'est-à-dire l'ELB).

Dans l'ensemble, avoir l'adresse IP du client est plus important pour moi, mais je voudrais pouvoir enregistrer la chaîne complète des demandes afin que je puisse comprendre (et déboguer) comment le trafic circule. Actuellement, je ne peux demander à nginx que de journaliser l'adresse IP du client, sa propre adresse IP et l'adresse IP du serveur en amont. J'aimerais également pouvoir enregistrer l'IP ELB.

Je vois que X-Istence a posé la même question en 2013, avec peu de chance. Quelque chose a-t-il changé ou amélioré depuis?

Réponses:


8

Vous pouvez obtenir l'adresse client d'origine de l'ELB de connexion dans la variable$realip_remote_addr , mais sachez que cette variable n'a été ajoutée que dans nginx 1.9.7, vous devrez donc exécuter une version très récente de nginx.


Merci @Michael Hampton ♦! Je revenais pour répondre à ma propre question car après avoir poursuivi une stratégie alternative, je suis finalement tombé sur $realip_remote_addr. Cela fonctionne à merveille. J'essayais réellement de faire fonctionner proxy_protocol et je suis tombé sur les notes de mise à jour nginx pour 1.9.7
michaelg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.