Обратный прокси-сервер
Обратный прокси-сервер защищает веб-серверы от атак, повышает производительность и надежность их работы. Разбираемся, что такое обратный прокси и чем он отличается от прямого.
Это адаптированный перевод статьи «What is a reverse proxy? | Proxy servers explained» из блога компании Cloudflare.
Что такое обратный прокси?¶
Обратный прокси (реверс-прокси) — это сервер, который находится перед веб-серверами и пересылает запросы от клиента (например, от браузера) на эти веб-серверы. Чтобы лучше понять, как работает обратный прокси и какие преимущества он имеет, определим, что такое прокси-сервер.
Что такое прямой прокси?¶
Прямой прокси или просто прокси — это сервер, который находится перед группой клиентских компьютеров. Когда они отправляют запросы к сайтам и сервисам в интернете, прокси-сервер выступает в роли посредника: перехватывает запросы, а затем связывается с веб-серверами от имени клиентов.
Вот так работа прямого прокси выглядит на схеме:
A — домашний компьютер пользователя B — прямой прокси-сервер C — сервер веб-сайта (где хранятся данные веб-сайта)
При стандартном интернет-соединении компьютер А будет связываться напрямую с компьютером С: запрос клиента сразу попадает на сервер, который отвечает ему. Прокси выступает посредником между А и С: он перехватывает и запрос клиента, и ответ сервера.
Идея добавить посредника в коммуникацию между клиентом и сервером на первый взгляд выглядит странно, однако прокси дает ряд преимуществ:
Использование прокси позволяет избежать ограничений на просмотр контента, установленных в отдельно взятой стране или для компьютеров внутри организации. Некоторые правительства, школы и компании используют брандмауэры, чтобы предоставить своим пользователям доступ только к ограниченной версии интернета. Прямой прокси помогает обойти такие ограничения: он позволяет подключиться к промежуточному серверу, а не к запрещенному сайту.
Другая сторона прокси — возможность ограничить доступ к тому или иному контенту. Пользователь в такой сети (например, школьной) сначала подключается к промежуточному серверу, а тот, в свою очередь, не принимает ответы от запрещенных сайтов (например, от Facebook и других сайтов социальных сетей).
Технология позволяет сохранять анонимность. Например, при использовании прокси настоящий IP-адрес автора комментария на форуме будет сложнее отследить. Вместо IP-адреса пользователя будет виден IP-адрес прокси-сервера.
Чем отличается обратный прокси? Прямой прокси находится за пользователем и перехватывает запросы на границе сети, а затем отправляет их на веб-сервер и получает от него ответ. Обратный прокси при этом находится прямо перед веб-сервером.
Читайте также: Как сохранять фокус на протяжении всего обучения: советы от Хекслета
Разница между прямым и обратным прокси тонкая, но существенная. Если сильно упростить — прямой прокси находится прямо перед клиентом и гарантирует, что ни один пользовательский запрос не отправляется на веб-сервер напрямую. Обратный прокси находится прямо перед исходным сервисом и гарантирует что ни один клиент никогда не связывается напрямую с исходным сервером.
На схеме эта разница выглядит так:
D — домашний компьютер пользователя E — обратный прокси-сервер F — сервер веб-сайта
В обычной ситуации все запросы от D отправляются напрямую к F и наоборот. С обратным прокси-сервером все запросы от D будут направляться непосредственно в E, а E будет отправлять свои запросы и получать ответы от F. E затем передаст соответствующие ответы D.
Преимущества такого подхода можно описать следующим образом:
Балансировка нагрузки. Например, популярный сайт, который ежедневно посещают миллионы пользователей, в определенный момент может не справиться с нагрузкой и не сможет обрабатывать весь входящий трафик с помощью одного исходного сервера. В таких случаях трафик можно распределить по нескольким веб-серверам, которые будут обрабатывать запросы. В случае критического сбоя основного сервера другие веб-серверы могут подключиться к обработке трафика.
Защита от атак. Обратный прокси позволяет исходным серверам не раскрывать свои IP адреса клиентам. Это значительно затрудняет проведение DDoS-атак: все запросы можно пропускать через прокси-сервер с более надежной системой защиты и большей мощностью по сравнению с основным сервером. Например, через сервер Cloudflare.
Глобальная балансировка нагрузки на сервер (GSLB). Этот подход предполагает распределение сайта по нескольким серверам, которые физически расположенны в разных странах мира. Обратный прокси отправляет запрос пользователя на сервер, который географически находится ближе к нему. Это уменьшает расстояние, которые необходимо преодолевать запросам и ответам, сводя к минимуму время загрузки.
Кэширование. Обратный прокси-сервер также может кэшировать содержимое запроса и таким образом повышать производительность. Например, если пользователь из Парижа заходит на сайт, сервера которого расположены в Лос-Анджелесе, он может сделать это через локальный прокси в Париже, который затем взаимодействует с исходным сервером в Лос-Анджелесе. Прокси-сервер кэширует (или временно сохраняет) данные ответа, а следующие пользователи из Парижа увидят кэшированную локально версию данных, поскольку кэш будет на парижском реверс-прокси. Это существенно повысит производительность и время загрузки данных.
SSL-шифрование. Шифрование и дешифрование сообщений (SSL или TLS) для каждого клиента по отдельности стоит дорого с точки зрения вычислений для исходного сервера. Обратный прокси-сервер можно настроить для расшифровки всех входящих запросов и шифрования всех исходящих ответов, освободив ресурсы на исходном сервере.