2010-01-11 27 views
2

Mon application ASP.NET vérifie l'adresse IP du client appelant.C#: get Client-IP après ProxyPass

Mais je dois l'accueillir derrière un Linux-Box où Apache redirige vers un fonctionnement interne de Windows 2003 Server IIS comme:

ProxyPass/srs http://192.168.21.15/srs/

où 192.168.21.15 est l'adresse IP interne le serveur Windows et 192.168.21.1 l'adresse IP interne de la machine Linux qui reçoit la requête d'Internet.

Maintenant, il me semble que les demandes de INTErNET qui sont transmis à w.x.y.15 tous semblent à l'origine de w.x.y.1

Comment puis-je conserver (ou avant) l'adresse IP d'origine?

J'ai entendu parler de X-forwarded-for ... mais comment puis-je récupérer cette valeur dans C# ??

Merci, Reinhard

Répondre

1

En général, si un serveur proxy modifie les informations d'adresse IP l'adresse IP d'origine est stockée dans la variable serveur HTTP_X_FORWARDED_FOR. Pour y accéder dans ASP.NET en utilisant C# vous pouvez utiliser:

Request.ServerVariables["HTTP_X_FORWARDED_FOR"] 
0

Pour les candidats java, vous pouvez utiliser:

String ipAddress=request.getHeader("X-Forwarded-For"); 

Si vous utilisez request.getRemoteAddr(), il peut revenir 127.0.0.1 s'il a été Apache redirection sur votre serveur de déploiement.

Questions connexes