Что такое реверс прокси
Пробы и ошибки при выборе HTTP Reverse Proxy
Сегодня мы хотим рассказать о том, как команда сервиса бронирования отелей Ostrovok.ru решала проблему роста микросервиса, задачей которого является обмен информацией с нашими поставщиками. О своем опыте рассказывает undying, DevOps Team Lead в Ostrovok.ru.
Сначала микросервис был мал и выполнял следующие функции:
По мере роста сервиса стали всплывать разного рода проблемы. Разные поставщики выдвигают свои правила работы: кто-то ограничивает максимальное количество соединений, кто-то ограничивает клиентов белыми списками.
В итоге нам предстояло решить следующие задачи:
Схема была простой: делался запрос в наш новый Proxy Server на Nginx с доменом вида
соответствовал адресу партнера. Из map брался адрес и делался proxy_pass на этот адрес.
А вот как выглядит “ snippet.d/upstreams_map ”:
Тут у нас сам server<> :
Все классно, все работает. Можно на этом закончить статью, если бы не один нюанс.
Добавляем еще один map для парсинга схемы:
И создаем upstreams с именами тегов:
Сам сервер немного видоизменяем, чтобы учитывать схему и вместо адреса использовать имя апстрима:
На этот раз точно можно заканчивать статью и идти пить чай. Или нет?
Ведь пока мы пьем чай, у кого-то из поставщиков может под тем же доменом измениться IP адрес или группа адресов (привет, Амазон), тем самым один из поставщиков может отвалиться в самый разгар нашего чаепития.
Ну что же, как быть? Есть у Nginx интересный нюанс: во время reload он может отрезолвить сервера внутри upstream в новые адреса и пустить трафик на них. В целом, тоже решение. Закидываем в cron reload nginx раз в 5 минут и продолжаем пить чай.
Но все же это показалось мне так себе решением, поэтому я стал косо посматривать в сторону Haproxy.
Отлично! Теперь осталось дело за настройками.
Вот краткий пример конфигурации для Haproxy:
Кажется, что на этот раз все работает как нужно. Вот только чем мне не нравится Haproxy, так это сложностью описания конфигураций. Нужно настрочить довольно много текста, чтобы добавить один работающий апстрим. Но лень – двигатель прогресса: если не хочется писать одно и то же, напиши генератор.
Теперь все, что нам нужно, это добавить новый хост в nginx_map, запустить генератор и получить готовый haproxy конфиг.
На сегодня, пожалуй, все. Данная статья относится скорее к вводной и была посвящена проблеме выбора решения и его интеграции в текущее окружение.
В следующей статье я расскажу подробнее о том, какие подводные камни нам встречались при использовании Haproxy, какие метрики оказалось полезно мониторить и что точно стоит оптимизировать в системе, чтобы выжать максимум производительности из серверов.
Разница между обратным и прямым прокси
Если вы новичок в мире прокси, вы, должно быть, сталкивались с двумя терминами — обратный прокси и прямой прокси. На самом деле это не одно и то же понятие. Я видел, как люди ошибочно принимали одно за другое, и это проистекает из того факта, что они на самом деле не понимают обоих.
Именно поэтому я написал эту статью; чтобы узнать, что отличает обратный прокси от прямого и как они выполняют одну и ту же функцию в разных средах. Перед этим давайте посмотрим, что собой представляет каждый из них.
Определение обратного и прямого прокси
Я знаю, вам может быть интересно, зачем поднимать этот вопрос; это потому, что вам должно быть дано четкое определение прокси. Большинство людей рассматривают прокси как сервер, через который клиенты отправляют свои веб-запросы на веб-сайты.
Что ж, это еще не все, что касается прокси. В отличие от большинства наших статей, мы должны перейти к более техническим аспектам и переопределить прокси для вас. Прокси-сервер — это просто сервер, действующий в зависимости от поведения другого компьютера, который может быть клиентом или сервером. Это означает, что помимо вас как клиента, которому нужны прокси-серверы, чтобы прятаться, веб-сервер, с которого вы запрашиваете ресурсы, также может скрываться за прокси.
Что такое прямой прокси?
Когда вы слышите, как люди упоминают слово «прокси» в веб-технологиях, на самом деле они имеют в виду прямые прокси. Прямые прокси — это типы прокси, которые клиенты используют для сокрытия своих IP-адресов и сохранения анонимности при работе в Интернете.
Что они делают, так это пересылают запросы, отправляемые через них, на соответствующие веб-серверы, и когда ответ им возвращается, они отправляют его вам. В зависимости от уровня анонимности веб-сервер, с которого вы запрашиваете ресурсы, не будет знать, что вы инициировали запрос. Но Forward Proxy знает и вас, и веб-сервер, с которого вы запрашиваете содержимое.
Как работает прямой прокси
При подключении к прокси-серверу ваше устройство отправляет обычный запрос, как если бы прокси-сервер не существовал, но оно будет перенаправлять все свои запросы через этот прокси-сервер, и прокси будет принимать запросы и перенаправлять их через свой собственный IP-адрес, и если он запутан (анонимен), он скроет ваш IP-адрес и заменит его своим собственным адресом.
Лучший пример того, как прямой прокси-сервер может вам помочь, — это обход сетевой блокировки. Если ваша сеть блокирует Instagram, вы можете решить проблему блокировки с помощью прокси https://proxy-seller.ru/russian-proxy. Вы подключитесь к прокси-серверу вместо сервисов Instagram и будете получать информацию без предупреждения брандмауэра.
Что такое обратный прокси?
Хотя вышеперечисленное применимо только к клиентам, некоторые прокси также были разработаны для обеспечения конфиденциальности веб-серверов. Позвольте мне рассказать вам кое-что. Не только вам нужна конфиденциальность; веб-серверам это нужно, потому что они не знают, заслуживаете ли вы доверия или нет. Однако некоторые существуют по другим причинам.
Обратный прокси-сервер — это прокси-сервер, который принимает веб-запросы от имени веб-серверов. После получения запроса, основываясь на его конфигурации, он определяет, заслуживает ли запрос перенаправления на реальный сервер или нет.
При наличии обратного прокси-сервера вряд ли удастся напрямую поразить реальный сервер — это потому, что только IP-адрес обратного прокси является общедоступным. Это создает определенный уровень конфиденциальности для серверов.
Как работает обратный прокси
По сути, веб-сервером может быть один сервер или их набор, но они не подключаются напрямую к Интернету. Вместо этого они подключаются к обратному прокси. Этот обратный прокси-сервер действует как веб-сервер. Вы как веб-браузер подключаетесь к сайту и просто видите прокси; вы не видите ни одного из серверов, стоящих за ним. Прокси-сервер притворяется веб-сервером, выполняя такие функции, как скрытие настоящего IP-адреса сервера.
Обратный или Прямой прокси
Глядя на приведенные выше определения, вы можете увидеть, что эти два термина не совпадают и, по сути, совершенно разные. На всякий случай, если вы не заметили разницы, в этом разделе мы подробно обсудим различия между ними.
Структурная позиция
Самая важная отличительная черта как обратных прокси-серверов, так и их аналогов прямых прокси — это их структурное положение во всем сочетании отправки и получения ответа. Для прокси-серверов Forward они являются клиентскими и обеспечивают клиентскую анонимность для вашего ПК. Прямые прокси — это ваш шлюз в Интернет, и они могут изменять ваши запросы до того, как они попадут на веб-сайт, который вы собираетесь посетить. Чтобы вы могли использовать прокси-сервер пересылки, вам необходимо настроить их на своей стороне — на стороне клиента.
Для обратных прокси они ориентированы на сервер и обеспечивают анонимность на стороне сервера. Они служат шлюзом к веб-серверу, с которым вы собираетесь взаимодействовать. Так же, как вы не хотите, чтобы веб-серверы знали ваш реальный IP-адрес, некоторые организации также не хотят, чтобы вы знали о существовании их фактических серверов; Итак, они устанавливают прокси-сервер, который действует как их настоящий сервер. Но когда поступают запросы, он направляет их на настоящий сервер.
Область применения
Структурное расположение двух типов прокси сделало их область применения различной. Хотя оба могут блокировать умеренный трафик пользователей и оба являются шлюзами, их приложения различаются. Каковы же тогда варианты использования каждого из них?
Для форвардных прокси вариант их использования довольно прост и известен многим пользователям Интернета.
Сама идея предоставления IP-адреса и конфиденциальности местоположения открывает множество областей, в которых используются прокси-серверы. Прямые прокси полезны в области защиты бренда и проверки рекламы. Они также полезны при поисковой оптимизации, сканировании и парсинге в Интернете, а также при игре в онлайн-игры, социальные средствами автоматизации медиа, и многими другими.
Для обратных прокси их использование не известно широкой публике, за исключением тех, кто знаком с серверными технологиями.
Одним из наиболее важных применений обратных прокси является то, что они используются для балансировки нагрузки. Они распределяют входящие веб-запросы на группу веб-серверов, выполняющих одну и ту же функцию — это позволяет веб-сайту с высоким трафиком быстро отвечать на отправленные им запросы. Помимо этого, они используются для кеширования, что в конечном итоге приводит к более быстрому отклику и экономии полосы пропускания. Они также используются по соображениям безопасности, чтобы обеспечить некоторую форму оболочки для реальных серверов, чтобы было трудно атаковать их напрямую.
Вывод
Глядя на вышеизложенное, вы увидите, что, хотя все они имеют слово «прокси» в своих именах, на самом деле это не одно и то же. У них обоих есть свое уникальное использование, основанное на их позиции в цикле запроса-ответа. Однако важно знать, что каждый из них модерирует ваш трафик и может либо заблокировать ваши запросы, либо разрешить их.
Перерастая reverse proxy — технология удаленной защиты и оптимизации сайтов без изменения А-записей DNS
За последний месяц средняя нагрузка на интернет ресурсы сильно выросла из-за повсеместного перехода на дистанционную работу и обучение (как именно читайте в нашем материале «Пандемия и трафик — взгляд со стороны оператора связи». Особым спросом пользуются онлайн кинотеатры и игры, платформы для онлайн обучения, сервисы по заказу доставки еды. В таких условиях потенциальный экономический ущерб от недоступности ресурса, в том числе из-за DDoS-атак, особенно высок. Какое решение выбрать для защиты своего проекта?
В материале вас ждут:
Скорее всего, первое решение, которое вам попадется, будет основано на технологии reverse proxy со сменой A-записей DNS. Поэтому сначала мы рассмотрим принцип работы технологии, ее возможности (если вы хорошо знакомы с reverse proxy — смело пропускайте эти два подраздела) и ограничения, связанные с доставкой трафика (это пропускать не стоит). Затем мы покажем, как эти ограничения можно обойти на примере реального кейса. В конце мы дадим несколько общих рекомендаций по организации защиты интернет ресурса.
Reverse proxy — принцип работы
Здесь мы рассмотрим reverse proxy, как средство доставки трафика. Схема ее работы всем хорошо знакома, но не упомянуть ее здесь просто нельзя.
Reverse proxy — возможности
Какие возможности предоставляют решения работающие через reverse proxy со сменой А-записей?
Reverse proxy — ограничения
У данной технологии есть ряд подводных камней, о которых не очень-то принято говорить. К ее ограничениям можно отнести:
Недостатки решений по защите от DDoS-атак на базе “классической” Reverse Proxy начинают ощущаться, по мере того как растущий проект упирается во все большее число ограничений технологии. Какие технические решения способны нивелировать или значительно снизить риски недоступности сайта из-за перечисленных недостатков? — читайте ниже.
Перерастая reverse proxy
Давайте рассмотрим проблему на реальном примере из нашей практики. В прошлом году к нам обратился крупный клиент, с конкретным списком требований к услугам по защите. Мы не можем раскрыть название компании по понятным причинам, а вот потребности клиента — пожалуйста:
Услуги вроде защищенного хостинга, виртуальных и выделенных серверов позволяют защититься от атак на уровнях L3-L7 OSI, но требуют переезда и означают использование единственного провайдера защиты. Что делать?
Защита от DDoS внутри сети с защищаемыми сервисами
Установка фильтрующего оборудования в своей сети позволяет защитить сервисы на уровнях L3-L7 OSI и свободно управлять правилами фильтрации. Вы несете существенные капитальные (CaPex) и операционные расходы (OpEx), выбирая такое решение. Это расходы на:
Даже для крупных компаний, такое решение часто является экономически нецелесообразным, не говоря о среднем и малом бизнесе. Нашему клиенту оно также не подошло.
Проксирование без смены А-записей.
Чтобы удовлетворить потребности таких клиентов, мы разработали технологию перехвата веб-трафика и реализовали ее в рамках услуги удаленной защиты без смены А-записей. В основе решения лежит принцип: Все соединения между АС клиента и публичными сетями должны быть защищены. Клиент передает нам анонсы своих IP адресов/сетей по BGP, а мы анонсируем их в Интернет.
Весь трафик, предназначенный защищаемым ресурсам, проходит через нашу сеть. Клиент может оставить несколько резервных подключений и использовать их в случае непредвиденных обстоятельств, сняв анонсы с сети DDoS-GUARD. В штатном режиме мы советуем использовать только наши подключения для выхода в сеть Интренет, чтобы мы могли гарантировать защиту клиентских сервисов.
На схеме ниже показано, как организована обработка трафика в нашей сети на примере веб-трафика.
Заключение
Теперь давайте проверим удовлетворяет ли разработанное DDoS-GUARD решение списку требований из раздела «Перерастая reverse proxy».
Общие рекомендации по организации защиты вашего проекта:
Nginx как Reverse Proxy для сайта, использующего SSL
Введение
Проблемы
Поскольку непосредственный прием запросов клиентов перешел на плечи nginx то и работу с SSL надо переносить на него же. Apache, который теперь висел но loopback 127.0.0.1:8080, в поддержке SSL не нуждался. Первая проблемка заключалась в том, что сертификат был от Thawte, а они требовали использования промежуточного сертификата. Nginx для работы с такими сертификатами не имеет специальной директивы. В конфиге apache было так:
Как быть с SSLCACertificateFile в nginx? Оказалось надо просто «срастить» два файла, поместив их содержимое в один (публичный сертификат, следом промежуточный):
Все, теперь в nginx просто пишем:
Редирект с незащищенного сайта на защищенный сложностей в настройке не вызвал:
Сложности начались при работе ajax. Асинхронные запросы к серверу выполнялись с префиксом http:// что вызывало губительный для ajax редирект 301. Появилась необходимость передавать переменные окружения, в частности имя протокола, из nginx в apache, сделано это было так:
в nginx:
Самое главное в apache надо в определении виртуального хоста прописать:
Теперь все ajax запросы идут на https:// что и требовалось. Для этого трюка модуль apache setenvif_module должен быть установлен и включен в конфиге:
Также стоит иметь ввиду что некоторые приложения могут сами определять свой путь по переменным окружения. Так например phpMyAdmin, так нужный разработчикам ресурса, в случае если у него в конфиге не указан полный путь будет формировать его сам с указанием порта. Так получалось у меня нечто вида:
Вот это самое :80 сильно все портило, phpMyAdmin не открывался с руганью что ошибка защиты SSL. Вылечилось, как указано выше, прямым указанием пути в конфиге phpMyAdmin-а:
Еще не стоит забывать о передаче реальных IP адресов посетителей в apache для сохранения имеющейся схемы ведения логов. Это расписано неоднократно, копайте в сторону модуля apache rpaf_module.
PS: Все делалось под FreeBSD 8.2, Apache 2.2.22_5, nginx-1.0.14,1. Полные тексты конфигов не выкладывал чтобы не раздувать заметку. По этой же причине на заострялся на передаче реальных IP клиентов и модуле rpaf_module. Если потребуется — выложу.
Чем различаются прямой и обратный прокси / The Difference Between a Reverse Proxy and a Forward Proxy
The Difference Between a Reverse Proxy and a Forward Proxy
Чем различаются прямой и обратный прокси
Прокси выполняют роль посредника при всевозможных онлайн-соединениях. Прокси делятся на виды по разным критериям. Вид прокси зависит от типа устройства, которое действует как прокси-сервер, уровня анонимности клиента при использовании прокси, способа управления данными. В соответствии с еще одним критерием — расположением прокси в структуре сети — прокси делятся на обратные и прямые.
We run a reverse proxy network, so it’s only natural that we get asked what are the differences between a reverse proxy server and a forward proxy server. In reality, those two are so different that they cannot be easily compared. In any case, we will do our best to tell you what is a reverse proxy, as well as what is a forward proxy in this short article.
Отличить один от другого несложно, если знать их особенности. Наша статья поможет разобраться.
What is a forward proxy
A forward proxy is what most people call ‘a proxy’. You send a connection request to it, and the forward proxy retrieves data from the internet. It usually lets clients on an otherwise firewall-restricted network to access the internet.
Прямой прокси
Когда говорят о прокси, чаще всего имеют ввиду именно прямой прокси. Запрос от клиента направляется на прокси-сервер, который в ответ перенаправляет данные из Интернета. Так клиент может обойти ограничения межсетевого экрана.
With a forward proxy you send a connection request through it, and it retrieves data from the internet.
При использовании прямого прокси запрос от клиента направляется на прокси-сервер, который в ответ перенаправляет данные из Интернета.
What is a reverse proxy
Reverse proxies control access to a server on private networks. A reverse proxy can perform authentication tasks, as well as cache or decrypt data.
Обратный прокси
Обратный прокси контролирует доступ к серверу локальной сети. Такой прокси может выполнять аутентификацию, а также кэшировать или расшифровывать данные.
A reverse proxy can perform authentication tasks, as well as cache or decrypt data. In essence, a reverse proxy is a gateway to a server or group of servers.
Обратный прокси- может выполнять задачи аутентификации, а также кэширование и дешифровку данных. По сути, обратный прокси выполняет роль шлюза для сервера или группы серверов.
Forward vs reverse proxies
As we’ve said, you cannot really compare the two. Though their names seem to deal with the same dimension, it only concerns the position of the proxy in the client-service connection. As intermediaries, they are in opposite sides of the connection.
Прямой vs обратный прокси
Сложно сравнить два этих вида прокси. Они выполняют роль посредника на противоположных сторонах связи.
A forward proxy is the intermediary that the client puts forward between itself and any server. The reverse proxy is at the other end – something the server puts forward between itself and any client.
Прямой прокси используется клиентом для доступа к серверу. Обратный прокси-сервер наоборот отделяет сервер внутренней сети от клиента.
По сути, прямой и обратный прокси-серверы выполняют разные задачи, но они оба:
Benefits of a forward proxy
Преимущества прямого прокси
Benefits of a reverse proxy
Reverse proxies are excellent at balancing server loads and serving cached site versions. As an intermediary point between a web server’s back-end and the client, the reverse proxy is a vital point for directing and managing incoming requests.
Преимущества обратного прокси
Обратные прокси отлично подходят для балансировки нагрузки на сервер и обслуживания кешированных версий сайта. Обратный прокси — промежуточная точка между бэкенд-сервером и клиентом, которая распределяет входящие запросы и управляет ими.
Владельцы серверов могут использовать обратный прокси чтобы скрыть часть серверов, доступ к которым разрешает обратный прокси. Для клиентов прокси будет выглядеть как конечный сервер. А кешированная версия сайта на обратном прокси-сервере повысит скорость вашего сайта.
Reverse proxy servers
Обратные прокси-серверы
Прокси-сервер с обратным подключением ( backconnect proxy server) позволяет использовать одну точку подключения для пула вращающихся прокси. Благодаря таким прокси-серверам можно больше не использовать прокси-листы.
Подробнее о различных типах прокси читайте в нашем блоге.
Переводчик: ИТ-маркетинговый стажер-переводчик БП «Альянс ПРО» Бедретдинова Диана
- Что такое селекционный экран в sap
- Что такое свеча в алтарь