Программно изменить IP-адрес, в котором разрешено имя домена для указанного c запроса - PullRequest
0 голосов
/ 20 апреля 2020

Чтобы выполнить автоматические тесты после развертывания на каждом веб-сервере за системой балансировки нагрузки, я хотел бы изменить, на какой IP-адрес будет отправляться мой запрос, но с использованием того же доменного имени.

Например, «www.mydomain.com» обычно преобразуется в адрес publi c, связанный с внутренним адресом 10.0.0.80, который является адресом балансировщика нагрузки.

Я хотел бы выполнить тот же тест в сети 4 серверы позади него, поэтому мне нужно "www.mydomain.com" для разрешения до 10.0.0.81 для первого теста, 10.0.0.82 для второго, и т. д. c.

Что я хотел бы сделать, это это эквивалентно изменению Windows файла "hosts", но программно для конкретного c запроса, возможно ли это?

1 Ответ

0 голосов
/ 20 апреля 2020

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

Используя HttpWebRequest (или, конечно, сокеты), вы может отправить тот же HTTP-запрос на другой IP-адрес. Просто замените имя хоста в Uri на IP-адрес и явно напишите заголовок хоста.

Что-то вроде:

static HttpWebRequest CreateRequest(Uri requestUri, string ipAddress)
{
    var host = requestUri.Host;
    var uri = requestUri.ToString().Replace(host, ipAddress);
    HttpWebRequest req = WebRequest.CreateHttp(uri);
    req.Host = host;
    return req;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...