C #: получить IP-адрес клиента после ProxyPass - PullRequest
2 голосов
/ 11 января 2010

Мое приложение ASP.NET проверяет IP-адрес вызывающего клиента.

Но я должен разместить его за Linux-Box, где Apache перенаправляет его на внутренний сервер Windows 2003 Server с IIS, например:

ProxyPass / srs http://192.168.21.15/srs/

, где 192.168.21.15 - внутренний IP-адрес Windows-сервера, а 192.168.21.1 - внутренний IP-адрес блока Linux, который получает запрос из Интернета.

Теперь мне кажется, что запросы от intERnet, которые пересылаются на w.x.y.15, все, кажется, происходят из w.x.y.1

Как сохранить (или переслать) исходный IP-адрес?

Я слышал о X-forwarded-for ... но как мне получить это значение в C # ??

Спасибо, Reinhard

Ответы [ 2 ]

1 голос
/ 11 января 2010

Как правило, если прокси-сервер изменяет информацию об IP-адресе, исходный IP-адрес сохраняется в переменной сервера HTTP_X_FORWARDED_FOR. Для доступа к этому в ASP.NET с помощью C # вы можете использовать:

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
0 голосов
/ 22 декабря 2011

Для кандидатов в Java вы можете использовать:

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

Если вы будете использовать request.getRemoteAddr(), он может вернуть 127.0.0.1, если на вашем сервере развертывания было перенаправление Apache.

...