2

когда мы используем HTTP-прокси, мы можем использовать его для посещения веб-сайтов с https. При обычном http-проксировании браузер отправляет HTTP GET в открытом виде. HTTP-прокси анализирует строку HOST запроса HTTP GET, чтобы узнать, какой веб-сайт хочет посетить браузер.

поскольку в обычном https браузер отправляет HTTP GET в зашифрованном виде, прокси не может узнать, какой пункт назначения хочет посетить браузер. Поэтому, когда в браузерах установлен HTTP-прокси, браузер отправляет запрос HTTP CONNECT, который показывает HOST в текстовом виде.

Теперь у меня есть прокси-сервер, за ним скрыты несколько веб-серверов. Все они с разными IP. И только прокси знает их IP. у каждого из них есть доменное имя. Например, myproxy.com, server1.myproxy.com, server2.myproxy.com ... но когда браузер выполняет DNS-запрос для этих доменных имен, возвращаемый IP-адрес является IP-адресом прокси-сервера.

Когда браузер хочет посетить server1.myproxy.com в http, он делает запрос DNS и получает IP прокси. Затем он подключается к прокси через TCP и отправляет HTTP-запрос GET. Прокси-сервер может анализировать HTTP-запрос, чтобы узнать, какой веб-сервер браузер хочет посетить.

но если браузер хочет посетить server1.myproxy.com по адресу https, так как браузер не устанавливает прокси в качестве прокси по умолчанию, он не отправляет запрос HTTP CONNECT. Поэтому мне кажется, что прокси не сможет узнать, какой веб-сервер хочет посетить браузер.

Существуют ли способы, позволяющие прокси-серверу узнать, какой веб-сервер хочет посетить браузер? а именно, как заставить браузер отправлять HTTP-запрос CONNECT? Спасибо!

1 ответ1

1

Невозможно сказать браузеру, что сервер, к которому он подключается, на самом деле является прокси. Браузер использует CONNECT только тогда, когда он знает о прокси (обычно в локальной конфигурации).

Что вам нужно сделать, это разорвать соединение HTTPS на балансировщике нагрузки, а затем только обмениваться данными HTTP (или другое соединение HTTPS) между балансировщиком нагрузки и фермой серверов.

Чтобы это работало, балансировщику нагрузки необходим сертификат с несколькими именами серверов (обычно называемый Subject Alternate Names ; предпочтительно) или server name indication SSL/TLS (это пока не работает надежно во всех браузерах).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .