Nginx remplace REMOTE_ADDR avec X-Forwarded-For
Je suis tout à fait nouveau pour Nginx, et il semble tout aussi déroutante. J'ai mon serveur de configuration parfaitement, mais le problème est que, depuis mon serveur est protégé à l'aide d'un proxy HTTP; au lieu de fermer la vraie IP de l'utilisateur, c'est l'enregistrement de l'IP du serveur proxy.
Ce que j'ai essayé de faire a été mise en $_SERVER['REMOTE_ADDR'];
à $_SERVER['X-Forwarded-For'];
mais je suis un undefined index d'erreur, donc je suppose que je dois définir X-Forwarded-For
dans Nginx? Mais je ne suis pas au courant comment faire, j'ai une configuration simple, c'est juste Nginx avec PHP. Rien de plus, rien de moins.
J'ai cherché partout sur le web, mais ne peut pas trouver l'information qui est facile à comprendre.
J'ai accès au code source, si, un peu aide. J'ai essayé beaucoup de solutions, mais en vain.
source d'informationauteur Reverb
Vous devez vous connecter pour publier un commentaire.
La bonne façon de le faire est par la définition de la
real_ip_header
de configuration de nginx.Exemple avec confiance HTTP proxy IP:
De cette façon, la valeur de $_SERVER['REMOTE_ADDR'] sera correctement rempli en PHP fastcgi.
Documentation lien - nginx.org
$http_x_forwared_for
peut contenir plusieurs adresses ip, où le premier doit être l'ip du client.REMOTE_ADDR
ne doit être l'ip du client.Donc, en utilisant les regex dans votre
nginx.conf
vous pouvez définirREMOTE_ADDR
à la première adresse ip de$http_x_forwarded_for
comme suit:J'ai résolu mon problème, depuis PHP est filtré à travers FastCGI, j'ai simplement ajouté un fast CGI param qui ensemble
REMOTE_ADDR
à la variablehttp_x_forwarded_for
donc quelque chose de similaire à ceci: