Как можно перенаправить один URL на разные сайты / серверы? (например: https://hkps.pool.sks-keyservers.net/)

Вчера я заметил, что https://hkps.pool.sks-keyservers.net/ показал на моем ноутбуке другую страницу, чем на настольном компьютере.

Этот URL перенаправляет на один из многочисленных серверов, перечисленных здесь: https://sks-keyservers.net/status/

В отличие от обычного перенаправления URL-адреса, URL-адрес не изменяется, в то время как содержимое страницы изменяется.

Как именно это работает? Как это можно настроить? Имеет ли это какое-либо отношение к круговой системе DNS?

Также кажется, что он всегда показывает один и тот же "сервер" на данном ПК, если к нему один раз был получен доступ. Как оно это делает?

http://www.pool.ntp.org/en/ похоже, похожая система.

3 ответа

Решение

Да, все пулы sks-keyservers.net настроены с использованием циклического перебора DNS. Что касается обратных прокси, то для всех серверов должен быть включен один, и если вы посмотрите на столбец rprox по адресу https://sks-keyservers.net/status/ то некоторые синие флаги указывают серверы с несколькими серверами в бэкэнде в кластерная установка.

Фактические данные для циклического перебора основаны на (i) ежечасном обновлении полного пула (ii) на DNS-сервере, выполняющем авторизацию, обновление списка записей DNS каждые 15 минут. Для негеографических пулов в (ii) используется случайный выбор, для географических пулов (EU, NA, ...) он ранжируется по записи SRV на основе описания в http://kfwebs.com/sks-keyservers-SRV.pdf

Есть несколько способов сделать это.
Вот очень поверхностный способ описать это.

Один из распространенных способов заключается в том, чтобы " https://hkps.pool.sks-keyservers.net/" указывал на внешний интерфейс с веб-сервером.

Затем внешний интерфейс передает ваш запрос на один из его внутренних серверов. Для внешнего сервера существует множество способов выбора внутреннего сервера. round robin один из них, number of connections Другой.

Когда вы возвращаетесь на страницу " https://hkps.pool.sks-keyservers.net/", веб-интерфейс либо запоминает ваш IP-адрес и отправляет вас в тот же бэкэнд, либо бэкэнд дает вам куки-файл, который читает веб-интерфейс, который сообщает, что вы хотите перейти к определенному бэкэнду.

Вероятно, это не имеет ничего общего с DNS-частью соединения.

Веб-серверы могут отключать информацию, отправляемую вашим браузером, с помощью заголовков запросов, например, тегов "referer", которые указывают, что вы нажали на ссылку на другом сайте, чтобы попасть сюда, или что наиболее вероятно в этом случае - строка User-Agent, отправленная вашим браузер. Вот пара примеров строк User-Agent:

Chrome версии 32, работающий на 64-разрядной версии Linux:

Пользователь-агент: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.107 Safari/537.36

или же

Safari версии 7.0.1, работающий на OS X 10.9.1:

Пользователь-агент: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, как Gecko) Версия / 7.0.1 Safari / 537.73.11

Это также, как веб-серверы узнают, если вы находитесь на мобильном устройстве.

Вот версия Safari 7.0, работающая на iPad под управлением IOS 7.0.4:

User-Agent: Mozilla / 5.0 (iPad; CPU OS 7_0_4, как Mac OS X) AppleWebKit/537.51.1 (KHTML, как Gecko) Версия /7.0 Mobile/11B554a Safari/9537.53

Веб-сервер может использовать эту информацию для отображения другой страницы, если дизайнер приложил к этому сознательные усилия. Таким образом, вы можете получить другую страницу Chrome и Safari, как простой пример. Но как вы можете видеть из содержимого строк User-Agent, там есть много информации, которую веб-дизайнер может использовать для настройки получаемой страницы, которую вы возвращаете.

Другие вопросы по тегам