C #: получить IP-адрес клиента после ProxyPass

2

Приложение 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... но как получить это значение в С#??

Спасибо, Reinhard

Теги:
ip-address
ip
forward

2 ответа

1
Лучший ответ

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

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню