У нас есть два сервера балансировки нагрузки. Поскольку мы разместили приложение asp.net 3.5 прямо сейчас, мы используем запрос userhostaddress для получения IP-адреса посетителя, но он предоставляет IP-адрес балансировщика нагрузки вместо реального IP-адреса. Может у кого-нибудь есть код для этого.
Как получить IP посетителя на машине балансировки нагрузки с помощью asp.net
Ответы (3)
Проблема больше связана с тем, что «балансировщик нагрузки» действует как прокси. Какой тип балансировщика нагрузки вы используете? Я знаю, что с сервером Microsoft ISA есть настройка для передачи исходного IP-адреса пользователя на веб-сервер.
В противном случае вам придется написать страницу, чтобы выгрузить переменные сервера и посмотреть, добавляется ли дополнительная переменная сервера, которая дает вам реальный IP-адрес клиента.
Я думаю, что вы должны искать не только HTTP_X_FORWARDED_FOR, но и все это, в зависимости от того, какой баланс загрузки вы используете
Context.Request.ServerVariables[CheckAllBelowList]
"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",
Возврат одного из них - это фактический IP-адрес вашего клиента, за исключением случаев, когда это другой прокси, мне также нужно узнать, как кто-то может это получить, чтобы найти пользователя, который находится за 2-3 прокси ...
Если вы знаете кого-нибудь еще, пожалуйста, скажите мне об этом.
в зависимости от сервера балансировки нагрузки IP-адрес клиента может / должен быть записан на:
Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Но будьте осторожны, если пользователь также находится за прокси-сервером, значением может быть исходный клиент прокси, а не клиент балансировщика нагрузки (который в данном случае будет IP-адресом прокси). Я не уверен, какое поведение является «нормальным».
Надеюсь, это поможет, Алекс