Obtenez la véritable adresse IP du client avec Rails et Nginx?

Mon serveur n’a pas d’adresse IP publique, donc je ne sais pas comment obtenir l’adresse IP du client réel.

Ceci est la configuration de mon nginx:

location / { proxy_pass http://domain1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 

Dans le contrôleur de mon application Rails, request.ip et request.remote_ip renvoient l’adresse de la passerelle de mon serveur.

Comment puis-je obtenir la véritable adresse IP du client?

Comment obtenir la valeur X-Forwarded-For de la demande Rails?

Vous devriez obtenir la valeur d’en-tête X-forwarded-for

http://en.wikipedia.org/wiki/X-Forwarded-For

Rails était censé le faire automatiquement pour nous, mais il semble être cassé avec le 3.x actuel

J’utilise ceci:

 def ip() request.env['HTTP_X_FORWARDED_FOR'] || request.remote_ip end