2010-03-11 9 views
5

Lorsque je visite mon application Rails 2.2 sur mon serveur distant, la valeur suivante s'affiche sous la forme REMOTE_ADDR.Pourquoi request.env ['REMOTE_ADDR'] renvoie-t-il deux adresses IP?

request.env [ 'REMOTE_ADDR']: "75.184.124.93, 10.194.95.79"

Ce qui m'a déconcerté est pourquoi il y a deux adresses IP. Une vérification rapide de mon adresse IP publique actuellement louée confirme que mon adresse IP est 75.184.124.93. Où vient 10.194.95.79?

Y a-t-il quelque chose à propos de la façon dont les adresses distantes sont collectées et signalées dans la spécification d'en-têtes HTTP que je manque? Est-ce attendu, un comportement normal?

+0

10.194.95.79 est une adresse IP de réseau privé. –

+0

Pourquoi est-il ajouté à 75.184.124.93 dans request.env ['REMOTE_ADDR']? –

+0

Est-ce que cela pourrait être parce que l'en-tête de la requête HTTP est modifié par le proxy inverse assis devant mon niveau d'application? –

Répondre

5

C'est certainement à cause d'un proxy inverse. Les proxies inverses (j'utilise souvent le mode BigIP et le mode mod_proxy Apache) ajoutent généralement toutes les adresses IP à la liste afin que vous puissiez choisir celles qui conviennent dans votre code. Par exemple, vous voudrez peut-être trouver le public pour vous connecter à votre application webstats, alors il est correct dans REMOTE_ADDR. Mais vous avez également les adresses IP internes pour savoir de quel loadbalancer il provient, quel serveur interne est activé pour un type de suivi de réseau interne, etc

Questions connexes