Получение клиентских значений серверных переменных IIS в среде с балансировкой нагрузки - PullRequest
1 голос
/ 09 февраля 2011

У меня есть интрасеть веб-приложение ASP.NET, в котором мне нужно получить IP-адрес компьютера клиента. Я делаю это с помощью следующего кода:

HttpContext.Current.Request.ServerVariables.Item("REMOTE_HOST")

Раньше он работал, когда мой сайт ASP.NET размещался только на одном сервере. Однако как только мы установили балансировщик нагрузки и перенесли наши приложения в веб-ферму, приведенный выше код возвращает IP-адрес устройства Load Balancer , а не клиента.

Я работаю с сетевиками, чтобы определить, что можно настроить по-другому с помощью балансировщика нагрузки, но в то же время мне было интересно, есть ли другой способ получить IP-адрес клиента, кроме использования этой серверной переменной IIS? Или какие-либо другие предложения?

Спасибо!

1 Ответ

2 голосов
/ 15 февраля 2011

Какой балансировщик нагрузки вы используете?Похоже, ваш балансировщик нагрузки действует как прокси для веб-трафика, поэтому причина, по-видимому, исходит от LB.Большинство аппаратных балансировщиков нагрузки построены на платформах Linux, и при условии, что ядро ​​его поддерживает, предусмотрена прозрачность: http://www.mjmwired.net/kernel/Documentation/networking/tproxy.txt Однако для этого, вероятно, потребуется корневой доступ к устройству и некоторое время простоя.Но об этом, возможно, стоит упомянуть службу поддержки поставщика, если у него нет идей.

Еще один (надеюсь, гораздо более простой) вариант: возможно, вы сможете настроить прокси-сервер балансировщика нагрузки для записиИсходный IP-адрес клиента в заголовке HTTP x-forwarded-for: http://en.wikipedia.org/wiki/X-Forwarded-For И тогда вы сможете прочитать этот заголовок через ASP.net аналогичным образом:

Request.ServerVariables("X-Forwarded-For")

Это можетуже работает, если прокси уже делает это.

На самом деле ваши параметры зависят от того, на что способен ваш балансировщик нагрузки и что настраивается.Обратите внимание на список распространенных поставщиков оборудования в нижней части вики-страницы выше.

...