web-dev-qa-db-fra.com

Obtenez la vraie IP utilisateur derrière deux proxies inversés

Voici la configuration de mon environnement:

  • Le serveur A héberge le site (Nginx + PHP-FPM + Wordpress)
  • Le serveur B est un proxy inverse Nginx pour le serveur A
  • Le proxy inverse Cloudflare est au top.

Par conséquent, les demandes des utilisateurs s’adressent d’abord à Cloudflare, puis au serveur B, puis au serveur A. J'ai défini:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

sur le serveur B. J'ai également installé le plugin Cloudflare wordpress, mais Wordpress obtient toujours l'adresse IP du serveur B au lieu de l'adresse IP de l'utilisateur, en détectant les adresses IP Cloudflare comme adresses d'origine. :(

L’installation de Proxy Real IP modifie les adresses IP du serveur B en adresses IP Cloudflare et non en adresses IP réelles.

Toute aide pour obtenir la vraie adresse IP utilisateur à Wordpress end?

1
Ali Hashemi

Lorsque plusieurs mandataires sont impliqués et qu'ils prennent tous en charge X-Forwarded-For, ils y ajoutent chacun une valeur. Cloudflare l'indique dans sa documentation .

Pour obtenir ce comportement de nginx, il semble que vous deviez définir l’option real_ip_recursive .

Ainsi, du côté WordPress, la véritable adresse IP de l'utilisateur sera généralement la première adresse IP de la liste des valeurs séparées par des virgules de l'en-tête X-Forwarded-For.

Votre en-tête WordPress indique qu'il utilise "une expression régulière" pour faire correspondre l'adresse IP de ce champ, mais ne précise pas qu'il peut traiter plusieurs valeurs dans ce champ. Vous devrez peut-être mettre à jour le code du plug-in pour qu'il fonctionne correctement lorsqu'il existe plusieurs valeurs.

1