Как настроить обратный прокси (пошаговая инструкция для Nginx и Apache)
Опубликовано: 2020-08-14Обратный прокси-сервер находится перед веб-сервером и получает все запросы до того, как они достигнут исходного сервера. Он работает аналогично прямому прокси-серверу, за исключением того, что в этом случае веб-сервер использует прокси-сервер, а не пользователь или клиент. Обратные прокси обычно используются для повышения производительности, безопасности и надежности веб-сервера.
Например, у вас может быть сайт, не относящийся к WordPress, размещенный в домене example.com
на сервере A, а его блог, работающий на WordPress, с URL-адресом example.com/blog
, размещенным на сервере B. Этого можно добиться, добавив обратный прокси-сервер для сервер, на котором размещен ваш основной сайт. Вы можете настроить обратный прокси-сервер для перенаправления запросов к блогу на другой сервер (например, управляемый хост WordPress, такой как Kinsta).
В этой статье вы узнаете основы обратных прокси-серверов, как они работают, каковы их основные преимущества и как их можно использовать для ускорения и защиты вашего сайта WordPress.
Возбужденный? Давайте начнем!
Что такое обратный прокси?
Чтобы понять, что такое обратный прокси-сервер, вам нужно сначала узнать его роль и ознакомиться со всеми связанными с ним терминами.
Когда вы обычно просматриваете веб-страницы, вводя доменное имя или щелкая ссылку, ваш браузер/устройство напрямую подключается к серверу веб-сайта и начинает загрузку его ресурсов.

Если вы хотите скрыть свой IP-адрес от посещаемых вами веб-сайтов, вы можете использовать прокси-сервер, чтобы сначала отправлять на него все свои запросы. Он перенаправит ваши запросы на преобразователь DNS, а затем загрузит ресурсы веб-сайта с исходного сервера.
После этого он передаст эти ресурсы на ваше устройство. Это называется прямым прокси.

Вы полностью скрыты от веб-сайта, поскольку он считает, что ваш запрос исходит от прямого прокси-сервера.
Помимо повышения конфиденциальности пользователей, прямой прокси-сервер в основном используется для обхода географических ограничений контента. Например, если вы хотите посмотреть видео, заблокированное в вашем регионе, вы можете использовать прямой прокси-сервер с IP-адресом, на котором видео доступно для просмотра.
Прямой прокси-сервер работает почти так же, как виртуальная частная сеть (VPN), но это разные технологии с уникальными вариантами использования (хотя иногда они могут перекрываться).
Обратный прокси-сервер против прямого прокси-сервера
Обратный прокси-сервер выступает в качестве фронта для исходного сервера для поддержания анонимности и повышения безопасности, точно так же, как пользователь/клиент может использовать прямой прокси-сервер для достижения того же. Это гарантирует, что ни один пользователь или клиент не взаимодействует напрямую с исходным сервером.

Разница между прямым прокси и обратным прокси незначительна, но они работают по-разному.
Оба могут работать вместе, поскольку их функционирование не пересекается. Как правило, пользователи/клиенты используют прямой прокси-сервер, а исходные серверы используют обратный прокси-сервер.

Поскольку администратор сервера может контролировать работу обратного прокси-сервера, вы можете использовать его для включения многих полезных функций.
Мы перечислим все его преимущества позже в этом посте.
Зачем использовать обратный прокси?
Многие предприятия, особенно крупные предприятия, используют сделанные на заказ веб-сайты, созданные с учетом их уникальных потребностей и не работающие на WordPress. Некоторые примеры включают веб-сайты банков и страховых компаний.
В других случаях компания может разместить свой сайт на внешней службе, которая не позволяет им устанавливать какое-либо внешнее программное обеспечение (например, WordPress). Обычно это небольшие и средние розничные продавцы, использующие платформу электронной коммерции, такую как Shopify.
Поскольку WordPress имеет надежные функции CMS, многие компании, в том числе крупные предприятия с собственными веб-сайтами, могут предпочесть размещать свои блоги с помощью WordPress.
Один из способов обойти эту проблему — установить WordPress на субдомен основного веб-сайта и структурировать навигационные меню таким образом, чтобы пользователи могли легко переключаться между основным веб-сайтом и блогом.
Поскольку субдомены ведут себя как уникальный домен, это может повлиять на SEO вашего сайта. Несмотря на то, что Google одинаково относится как к поддоменам, так и к подкаталогам, требуется больше усилий для оптимизации веб-сайта для ранжирования в поисковых системах, если он размещен на поддомене, чем если он размещен в подкаталоге.

Google подтвердил, что он одинаково относится как к поддоменам, так и к подкаталогам, но некоторые эксперты по SEO не согласны с этим. И даже если это не влияет на SEO сайта, сайт, размещенный в подкаталоге, просто легче поддерживать.
Вот почему вы можете использовать обратный прокси-сервер для перенаправления запросов в блог сайта, размещенный на отдельном сервере. Например, банк может безопасно разместить свой основной веб-сайт на своих серверах, но он также может разместить свой блог на базе WordPress отдельно на управляемом хосте WordPress, таком как Kinsta.

Объединение двух разных сайтов под одним доменным именем — одно из ключевых преимуществ использования обратного прокси. Это помогает брендам поддерживать организованность своих сайтов, профессионализм и доверие к ним.
твитнутьПреимущества использования обратного прокси
Помимо приведенного выше варианта использования, обратные прокси-серверы также предоставляют множество других преимуществ. В следующем разделе обсуждаются некоторые из их основных преимуществ.
Балансировки нагрузки
Один исходный сервер не может обрабатывать весь входящий трафик веб-сайта с миллионами уникальных посетителей в день. В этих случаях вы можете разумно распределить трафик между пулом из множества серверов. Обычно на всех серверах размещается один и тот же контент, чтобы исключить единую точку отказа и повысить надежность веб-сайта.
Обратный прокси — отличный способ настроить это, поскольку он может получать входящий трафик до того, как он достигнет исходного сервера. Если исходный сервер перегружен или полностью выходит из строя, он может распределять трафик на другие серверы, не влияя на функциональность сайта.
Обратные прокси-серверы также могут направлять входящие запросы на несколько серверов, при этом каждый сервер выполняет определенную функцию, для которой он оптимизирован. Затем обратный прокси-сервер может собирать ответы со всех серверов и доставлять их клиенту.
Поскольку мы используем большинство популярных обратных прокси в первую очередь для балансировки нагрузки, их также называют балансировщиками нагрузки .
Глобальная балансировка нагрузки сервера (GSLB)
GSLB — это передовой метод балансировки нагрузки для распределения трафика веб-сайта между множеством серверов, стратегически расположенных по всему миру. Обычно это делается с помощью метода маршрутизации произвольной рассылки, когда обратный прокси-сервер выбирает серверный узел на основе самого быстрого времени в пути между клиентом и сервером.
GSLB не только значительно повышает надежность и безопасность сайта, но также сокращает задержки и время загрузки, тем самым повышая удобство работы пользователей. Вы можете использовать GSLB с другими методами оптимизации сети, такими как Spoon Feeding, чтобы еще больше высвободить вычислительные ресурсы исходных серверов.
Хотя вы можете настроить глобальную балансировку нагрузки сервера вручную на своем сервере, обычно об этом заботятся выделенные CDN, такие как Cloudflare и KeyCDN (которые также поддерживают Kinsta CDN). Kinsta обслуживает все веб-сайты, размещенные на нем, через балансировщик нагрузки на базе Google Cloud Platform.
Повышенная безопасность
Обратные прокси могут скрывать IP-адрес и другие характеристики исходных серверов. Таким образом, исходный сервер вашего веб-сайта может лучше поддерживать свою анонимность, что значительно повышает его безопасность.
Поскольку обратный прокси-сервер будет получать весь трафик до того, как он достигнет основного сервера, любым злоумышленникам или хакерам будет сложнее атаковать ваш сайт с помощью угроз безопасности, таких как DDoS-атаки.
Вы можете использовать строгий брандмауэр, чтобы защитить обратный прокси-сервер от распространенных кибератак. Без установленного обратного прокси-сервера трудно удалить вредоносное ПО или начать удаление.
Обратный прокси-сервер, такой как HAProxy, может добавить базовую аутентификацию HTTP-доступа к веб-серверу, на котором она не включена. Вы также можете использовать обратный прокси-сервер для добавления централизованной аутентификации для различных типов запросов.
Мощное кэширование
Вы можете использовать обратный прокси-сервер для веб-ускорения, кэшируя как статический, так и динамический контент. Это может снизить нагрузку на исходный сервер, в результате чего веб-сайт будет работать быстрее.
Например, если ваш исходный сервер находится в США, а ваш веб-сайт посещает пользователь из Европы, вы можете обслуживать кешированную версию своего сайта с обратного прокси-сервера в Европе. Поскольку обратный прокси-сервер находится ближе к пользователю, чем исходный сервер, загрузка веб-сайта занимает меньше времени, что обеспечивает его превосходную работу.
Varnish и Nginx FastCGI — яркие примеры обратных прокси-серверов, которые используются для кэширования веб-контента. Если ваш сайт размещен на Kinsta, вам не нужно беспокоиться о кэшировании, так как Kinsta позаботится обо всей работе по кэшированию за вас.
Превосходное сжатие
Ответы сервера занимают большую часть полосы пропускания. Сжатие ответов сервера (например, с помощью gzip) перед их отправкой клиенту может уменьшить требуемую полосу пропускания и ускорить ответы сервера по сети.
Обратный прокси-сервер идеально подходит для сжатия ответов сервера, поскольку он находится между исходными серверами и клиентом.
Оптимизированное SSL-шифрование
Шифрование и дешифрование запросов SSL/TLS для каждого клиента может быть очень обременительным для исходного сервера. Обратный прокси-сервер может взять на себя эту задачу, чтобы освободить ресурсы исходного сервера для других важных задач, таких как обслуживание контента.
Еще одним преимуществом разгрузки шифрования и дешифрования SSL/TSL является уменьшение задержки для клиентов, которые географически удалены от исходного сервера.
Вы также можете выбрать обратный прокси-сервер со специализированным оборудованием для ускорения SSL/TLS, чтобы еще больше оптимизировать эту задачу. Такой обратный прокси-сервер называется прокси-сервером завершения SSL/TLS. Некоторые серверы, такие как Varnish, не поддерживают протоколы SSL/TSL, поэтому обратный прокси-сервер завершения SSL/TSL может помочь защитить трафик, проходящий через них.
Лучшее A/B-тестирование
Большинство инструментов A/B-тестирования требуют, чтобы вы использовали внешние библиотеки JavaScript для загрузки их функций. Однако загрузка сторонних скриптов может замедлить время загрузки вашей страницы и создать прерывистую работу для пользователей.
Вместо этого вы можете использовать обратный прокси для создания двух отдельных потоков на самом уровне сервера. Например, вы можете использовать split_clients
или sticky route
Nginx для управления перенаправлением трафика.
Вы можете обратиться к руководствам по Nginx и freeCodeCamp, чтобы узнать больше о проведении A/B-тестирования с обратным прокси-сервером.
Мониторинг и регистрация трафика
Обратный прокси-сервер захватывает все запросы, которые проходят через него. Следовательно, вы можете использовать их в качестве центрального концентратора для мониторинга и регистрации трафика. Даже если вы используете несколько веб-серверов для размещения всех компонентов вашего веб-сайта, использование обратного прокси-сервера упростит мониторинг всех входящих и исходящих данных с вашего сайта.
Самые популярные обратные прокси
По данным W3Techs, почти 83% веб-сайтов не используют обратные прокси-серверы, которые они отслеживают.

Из 17% веб-сайтов, которые используют обратный прокси-сервер (перечислены выше), вы заметите, что большинство из них являются CDN. Это связано с тем, что большинство обратных прокси по умолчанию скрывают свое существование в качестве меры предосторожности. Следовательно, вы не можете полагаться на службы мониторинга веб-сайтов, такие как W3Techs, чтобы определить, какие обратные прокси-серверы являются наиболее популярными.
Согласно нашим исследованиям и опыту, наиболее популярными обратными прокси-серверами, используемыми сегодня, являются:
Nginx
Nginx — это веб-сервер с открытым исходным кодом, который также может служить обратным прокси-сервером. Помимо того, что он используется для размещения веб-сайтов, он также является одним из наиболее широко используемых решений для обратного прокси-сервера и балансировки нагрузки. По данным Netcraft, более 479 миллионов веб-серверов использовали Nginx в декабре 2019 года, что делает его лидером на рынке веб-серверов.

Nginx предоставляет все преимущества обратного прокси, описанные выше, а также многое другое. Он повышает производительность сети, безопасность, надежность и масштабируемость. Вы можете настроить Nginx, используя его файл конфигурации, который также поддерживает горячую перезагрузку. В Kinsta обратный прокси-сервер Nginx — это одно из нескольких дополнений премиум-класса, которые вы можете использовать.
Но вы также можете использовать коммерческое предложение Nginx Plus, чтобы получить доступ к параметрам конфигурации на основе API и другим функциям, подходящим для крупных корпоративных веб-сайтов.
Kinsta поддерживает все свои веб-сайты с помощью Nginx. Он занял первое место в рейтинге веб-хостинга Review Signal во всех категориях, в которых он участвовал. Другими крупными компаниями, использующими Nginx, являются MaxCDN, Cloudflare и Netflix.
Настроить Nginx в качестве базового обратного прокси-сервера очень просто. Nginx также предоставляет вам различные директивы для настройки обратного прокси-сервера вашего сервера в соответствии с вашими требованиями. Мы обсудим, как это сделать, в следующем разделе. Если вы являетесь клиентом Kinsta, вы также узнаете, как использовать обратный прокси-сервер для веб-сайтов, размещенных на Kinsta, в том же разделе.
Лак
Varnish — это обратный HTTP-прокси с открытым исходным кодом и встроенным механизмом кэширования. Он разработан в первую очередь для веб-сайтов с высокой посещаемостью, которые обслуживают динамический контент. Вы также можете использовать Varnish в качестве балансировщика нагрузки, брандмауэра веб-приложений (WAF) и пограничного сервера аутентификации и авторизации.
Он работает на всех современных версиях Linux и FreeBSD, в основном используется в качестве прикрытия для веб-серверов Nginx или Apache. Мощный и очень гибкий язык конфигурирования Varnish (VCL) позволяет вам определять различные функции, такие как обработка HTTP-запросов, кэширование и подключение к одному или нескольким веб-серверам.
По этой причине многие CDN используют Varnish в качестве основной основы для быстрой доставки контента.
Varnish также поддерживает Edge SideIncludes (ESI), язык, который помогает вам повторно использовать разделы одной веб-страницы на других веб-страницах. Если на вашем веб-сайте много повторяющегося контента на разных страницах, ESI может помочь вам ускорить загрузку страниц вашего сайта за счет кэширования часто используемых разделов.
Вы можете расширить Varnish с помощью его различных модулей (VMOD). Перейдите к официальному руководству Varnish, чтобы узнать, как настроить Varnish в качестве обратного прокси-сервера для WordPress.
Сервер трафика Apache
Apache Traffic Server — это кеширующий прокси-сервер с открытым исходным кодом. Он популярен благодаря своим быстрым масштабируемым функциям. Это был коммерческий продукт, разработанный Yahoo! давно, но они сделали его открытым исходным кодом и передали в фонд Apache Foundation для обслуживания.
Несколько крупных контент-сетей и CDN, таких как Comcast, Akamai, LinkedIn, Yahoo и Apple, используют Apache Traffic Server для поддержки своих технологий.

Вы также можете использовать Apache HTTP Server ( Apache httpd ), демон HTTP-сервера, для настройки обратного прокси-сервера на вашем веб-сервере. Помимо работы в качестве базового веб-сервера, он также помогает предоставлять пользователям статический и динамический контент. Далее в этой статье вы узнаете, как настроить Apache в качестве обратного прокси-сервера.
HAProxy
HAProxy — это обратный прокси-сервер и балансировщик нагрузки с открытым исходным кодом. Он предназначен для интеграции с большинством существующих архитектур веб-серверов, включая дистрибутивы Linux и облачные платформы. Подобно Nginx, HAProxy использует модель ввода-вывода, управляемую событиями, и поддерживает разделение запросов между несколькими рабочими процессами.
Для HTTP-запросов HAProxy работает исключительно хорошо даже при больших нагрузках. Некоторые из веб-сайтов с самым высоким трафиком в Интернете, такие как Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub и Imgur, используют HAProxy для эффективной доставки своих веб-сайтов.
Обсуждение того, как реализовать HAProxy, выходит за рамки этой статьи, но вы можете обратиться к их документации, чтобы понять, как это работает.
Примечание. Traefik и Envoy — две другие альтернативы HAProxy с открытым исходным кодом. Это и высокопроизводительные обратные прокси-серверы, и балансировщики нагрузки с множеством дополнительных функций.
Некоторые другие популярные обратные прокси-серверы — это AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer и Google Cloud Load Balancer. Исчерпывающий список лучших обратных прокси-серверов и балансировщиков нагрузки, используемых сегодня, вы можете найти на Stackshare.io.
Обратный прокси: варианты использования для сайтов WordPress
В основном существует три варианта использования обратного прокси-сервера для сайтов WordPress, включая сайты, размещенные на Kinsta.

В этом примере мы будем использовать только Nginx, так как это самый популярный обратный прокси-сервер, используемый сегодня для сайтов WordPress. Но те же основные принципы будут применяться и к другим обратным прокси.
Обратные прокси часто сложны в установке, настройке и поддержке. По этой причине Kinsta предлагает ежемесячную дополнительную подписку на 50 долларов для каждого обратного прокси-сервера, в настройке которого вам нужна помощь. Вы можете обратиться в службу поддержки Kinsta для получения дополнительной информации.
1. Основной и прокси-сайты, размещенные на одном сервере
Если и основной сайт, и проксируемый сайт размещены на одном и том же сервере, основной сайт может работать на установке WordPress, в то время как отдельная установка WordPress обеспечивает работу проксируемого сайта.
Поскольку у вас будет доступ как к сайтам, так и к их общему веб-серверу, вы можете настроить правила обратного прокси-сервера для основного сайта, а затем настроить проксируемый сайт для загрузки с обратного прокси-сервера.
Если вы размещаете оба этих сайта в Kinsta, вы можете обратиться в службу поддержки Kinsta и попросить их настроить для вас обратный прокси-сервер. Вот процедура, которую вам необходимо выполнить:
- Убедитесь, что и основной сайт, и прокси-сайт размещены на Kinsta. Если это не так, вы можете перенести оба сайта в среду Kinsta либо вручную, либо отправив запрос на перенос.
- Откройте заявку в службу поддержки и предоставьте группе поддержки Kinsta четкое описание конфигурации домена. Настройка обратного прокси-сервера займет примерно один рабочий день.
- Kinsta установит соответствующие правила обратного прокси-сервера на основном сайте и настроит прокси-сайт для загрузки через обратный прокси-сервер.
Вот стандартные директивы обратного прокси-сервера Nginx, используемые Kinsta для загрузки сайта подкаталога через обратный прокси-сервер:
location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
В приведенном выше коде вам нужно заменить заполнитель /subfolder/
фактическим именем подкаталога (например, /blog/
, /shop/
). Кроме того, поддомен http://subfolder.domain.com
должен соответствовать URL-адресу, используемому для направления обратного прокси-сервера на проксируемый сайт.
Директива location
включает символы вставки и тильды ( ^~ ), чтобы сообщить Nginx, что если он найдет определенную строку, он должен прекратить поиск дальнейших совпадений и использовать директивы, перечисленные здесь. Узнайте больше о директивах обратного прокси Nginx в его документации.
Далее вам нужно настроить проксируемый сайт для загрузки через обратный прокси. Вот стандартные шаги, которым следует Kinsta для настройки прокси-сайта:
- Создайте подкаталог по пути, откуда загружается проксируемый сайт. Все файлы проксируемого веб-сайта перемещаются в этот подкаталог.
- Обновите файлы конфигурации веб-сервера, чтобы определить новый подкаталог в качестве корневого каталога для проксируемого сайта. Кроме того, необходимо добавить правило перезаписи для удаления подкаталога из URI запроса для каждого входящего запроса.
- Обновите все URL-адреса в базе данных проксируемого сайта, чтобы они соответствовали действующим URL-адресам сайта (например,
example.com/blog
). - Отредактируйте файл
wp-config.php
проксируемого сайта с определением$_SERVER['HTTP_HOST']
, указав его на URL-адрес основного сайта. - Если вы используете SSL-сертификат, вам необходимо определить строгие правила в файле
wp-config.php
, чтобы избежать петель перенаправления.
Примечание. Проксируемый сайт не может создавать URL-адреса, дублирующие тот же подкаталог, в котором загружается проксируемый сайт. Например, проксируемый сайт по адресу example.com/blog
не может создать страницу или каталог по адресу example.com/blog/blog
.
2. Только проксированный сайт, размещенный на вашем сервере
Если у вас есть доступ только к проксируемому сайту и его веб-серверу, вам необходимо связаться с администратором сервера основного сайта и попросить его настроить для вас правила обратного прокси.
Нужен невероятно быстрый, безопасный и удобный для разработчиков хостинг для ваших сайтов? Kinsta создан для разработчиков WordPress и предоставляет множество инструментов и мощную панель инструментов. Ознакомьтесь с нашими планами
Чтобы сделать это, вы должны выполнить те же шаги, описанные выше, за исключением того, что в этом случае вы должны настроить правила на двух разных серверах.
Чтобы разместить свой прокси-сайт с помощью Kinsta, добавьте к сайту домен, который будет указывать на обратный прокси-сервер. Обычно для этой цели подходит поддомен (например blog.example.com
) для загрузки проксируемого сайта по ссылке из подкаталога (например, example.com/blog
).
После настройки проксируемого сайта на Kinsta вы можете связаться со службой поддержки Kinsta, чтобы настроить прокси-сайт для загрузки через обратный прокси-сервер. В настоящее время нашей службе поддержки потребуется реальный IP-адрес вашего сервера, чтобы завершить процесс настройки таким образом, чтобы посещения корректно учитывались. Если вы не можете предоставить статический IP-адрес из-за ограничений динамического IP-адреса от определенных поставщиков (например, AWS CloudFront), вместо этого ваш план будет преобразован в сопоставимый план на основе полосы пропускания.
Наконец, настройка обратного прокси-сервера на вашем сервере выходит за рамки поддержки Kinsta, поскольку об этом может позаботиться только администратор сервера.
3. Только основной сайт размещен на вашем сервере
Если у вас есть доступ только к основному сайту и его веб-серверу, вам следует настроить обратный прокси-сервер и настроить его правила для загрузки проксируемого сайта с внешнего хоста. Установка и настройка проксируемого сайта для загрузки через обратный прокси-сервер является обязанностью администратора вторичного сервера.
Размещение вашего основного сайта в Kinsta предоставит вам доступ к команде поддержки Kinsta. Вы можете подать заявку в службу поддержки, чтобы добавить стандартные правила обратного прокси-сервера, перечисленные ранее в этой статье. Вы также можете добавить любые дополнительные настройки к этим правилам, если это необходимо.
В этом сценарии вы несете полную ответственность за настройку проксируемого сайта для его правильной загрузки через обратный прокси-сервер.
Как настроить Nginx в качестве обратного прокси
Если Kinsta не размещает ваш веб-сайт, а вы управляете своими серверами, вы должны самостоятельно настроить обратный прокси-сервер и настроить его так, чтобы он указывал на проксируемый сайт.
В зависимости от операционной системы вашего веб-сервера вы можете установить Nginx по-разному. Для дистрибутивов Linux вы можете использовать различные пакеты Nginx в зависимости от версии вашего дистрибутива Linux.
В приведенном ниже примере мы установили основной сайт с доменным именем example.com
, а проксируемый сайт WordPress — с поддоменом blog.domain.com
. Оба они работают на Apache на веб-сервере, работающем на Ubuntu 18.04. Мы установим и настроим Nginx в качестве обратного прокси на основном сервере.
Для начала войдите в терминал вашего сервера через SSH. Затем используйте команду apt-get
, чтобы обновить список пакетов вашего дистрибутива и установить Nginx на свой веб-сервер.
sudo apt update sudo apt install nginx
Затем вам нужно настроить Nginx для прокси-запросов для доменов, размещенных на Apache. Для этого создайте новый файл виртуального хоста. Здесь я использую редактор nano для добавления кода, но вы можете использовать любой редактор кода по вашему выбору.
sudo nano /etc/nginx/sites-available/example.com.conf
Затем установите директивы Nginx для пересылки запросов в Apache, добавив следующие блоки server {...}
и location
:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # Proxy timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
В приведенном выше коде я определяю ссылку на подкаталог example.com/blog
, которая будет обслуживаться сервером Apache. Убедитесь, что вы используете общедоступный IP-адрес (или URL-адрес) вашего проксируемого веб-сайта в директиве proxy_pass
. В моем случае мой проксируемый сайт размещен на субдомене blog.domain.com
.
Примечание. Прежде чем вносить какие-либо изменения, убедитесь, что проксируемый веб-сайт установлен и готов к работе.
Вы можете узнать больше обо всех директивах обратного прокси, используемых здесь, в подробном указателе директив Nginx.
Сохраните файл виртуального хоста. Затем активируйте новый виртуальный хост, создав символическую ссылку для файлов с именем example.com.conf
в каталогах /etc/nginx/sites-available
и /etc/nginx/sites-enabled
.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
После этого протестируйте Nginx на наличие ошибок конфигурации.
sudo nginx -t
Если ошибок нет, перезагрузите Nginx, чтобы изменения вступили в силу.
sudo systemctl reload nginx
Вы успешно настроили Nginx для работы в качестве обратного прокси-сервера. Чтобы убедиться в этом, вы можете использовать функцию phpinfo() для проверки переменных PHP, загружаемых при посещении проксируемого сайта.
Под переменными PHP SERVER_SOFTWARE
и DOCUMENT_ROOT
вы увидите, что Apache обслуживает этот домен на серверной части. Но PHP-переменные HTTP_X_REAL_IP
и HTTP_X_FORWARDED_FOR
подтверждают, что Nginx использовался в качестве обратного прокси-сервера для пересылки запросов.
Вы можете ускорить обслуживание своего сайта WordPress через Nginx, используя модули fastcgi_cache и ngx_cache_purge. В то время как первый модуль будет кэшировать ваш сайт, второй модуль будет автоматически очищать кеш на основе определенных событий (например, публикации или редактирования записи/страницы WordPress).
Вы можете использовать плагин WordPress Nginx Cache Controller для управления кешем прокси-сервера Nginx непосредственно из панели администратора WordPress. Если вы используете многосайтовую установку WordPress, вы можете использовать плагин Nginx Helper, чтобы сделать то же самое.
Ознакомьтесь с основной документацией Nginx и руководством по настройке Nginx WordPress, чтобы получить подробный обзор того, как работать с Nginx и WordPress.
Как настроить Apache в качестве обратного прокси
Прежде чем начать, убедитесь, что у вас есть два работающих веб-сайта: example.com
и blog.domain.com
. Первый веб-сайт может быть или не быть сайтом WordPress, но второй должен быть сайтом WordPress, поскольку он используется в основном для загрузки блога корневого домена по ссылке подкаталога example.com/blog
.
Начните настройку Apache, открыв терминал вашего сервера через SSH и включив прокси-модуль Apache.
sudo a2enmod proxy proxy_http ssl
Выполнение вышеуказанной команды, скорее всего, перезапустит Apache, чтобы перезагрузить вновь определенные директивы.
Затем отредактируйте файл виртуальных хостов вашего основного сервера, чтобы создать обратный прокси. Вот код, который вам нужно добавить:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
Директива ProxyPass создаст обратный прокси-сервер для указанных путей, а директива ProxyPassReverse перехватит заголовки ответов HTTP, отправленные через этот обратный прокси-сервер, и перепишет их, чтобы они соответствовали серверу Apache.
После сохранения файла вам нужно отредактировать файл wp-config.php
, добавив следующий код непосредственно перед строкой, которая просит вас прекратить редактирование.
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
Наконец, вам необходимо обновить базу данных вашего сайта WordPress, чтобы добавить значения конфигурации для ссылки на подкаталог /blog
. Это можно сделать, выполнив следующий SQL-запрос:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
Теперь вы сможете посетить https://www.example.com/blog
URL и загрузить свой сайт WordPress, размещенный на субдомене http://blog.domain.com
, без изменения его URL. Вы можете продолжать использовать WordPress, как обычно, для просмотра, написания, редактирования и управления своим сайтом.
Ограничения обратного прокси
- Обратный прокси-сервер представляет значительную угрозу безопасности, поскольку он может считывать и изменять весь проходящий через него трафик. Если вы передаете HTTPS-трафик через обратный прокси-сервер, ему необходимо расшифровать и повторно зашифровать передаваемые данные. Это означает, что он должен обладать закрытыми ключами сертификата SSL/TLS. Таким образом, если какой-либо злоумышленник может скомпрометировать ваш обратный прокси-сервер, он может регистрировать пароли и внедрять вредоносное ПО на ваши веб-сайты.
- Если вы или ваши пользователи не можете напрямую получить доступ к вашему основному серверу, использование обратного прокси-сервера может привести к единой точке отказа. Например, если вы используете обратный прокси-сервер в качестве фронта для обслуживания нескольких доменов, то его сбой может привести к одновременному отключению всех доменов.
- Если вы полагаетесь на сторонний обратный прокси-сервер (например, Cloudflare), то вы передаете им конфиденциальную информацию вашего сайта. Пока им доверяют, вы не можете предсказать, к чему это может привести.
- Восстановление резервных копий или размещение промежуточных сайтов в реальном времени на веб-сайтах, которые загружаются через обратный прокси-сервер, может привести к тому, что проксируемый сайт перестанет загружаться должным образом.
Выбор между CDN и обратным прокси
CDN — это расширенная форма обратного прокси-сервера, при этом большая часть настройки и обслуживания выполняется третьей стороной. Они могут обеспечить удивительные преимущества производительности вашего сайта WordPress с минимальными усилиями с вашей стороны.
CDN не только кэшируют контент и быстро доставляют его пользователям, но также снижают нагрузку на ваши исходные серверы, снижают затраты на пропускную способность, обеспечивают дополнительный уровень безопасности, улучшают SEO вашего сайта и помогают вам лучше масштабировать ваш сайт.
Вы заметите, что большинство преимуществ, предоставляемых CDN, такие же, как и у обратных прокси-серверов. Итак, следует ли вам выбирать CDN вместо обратного прокси-сервера или наоборот?
Нет причин, по которым вы должны довольствоваться только одним. Если у вас уже установлен обратный прокси-сервер, вы все равно увидите прирост скорости и производительности от использования CDN. Оба их кеша хорошо сочетаются, и если у вас есть какие-либо уникальные потребности в обработке запросов (например, динамический контент, электронная торговля), вы можете легко настроить его с помощью некоторых пользовательских заголовков, передаваемых CDN или обратным прокси-сервером.
Резюме
WordPress очень гибкий. Вы можете использовать его как блог, сайт электронной коммерции или даже систему управления обучением. В большинстве случаев вы можете настроить WordPress в соответствии с вашими уникальными требованиями.
Однако иногда вам может потребоваться использовать отдельный домен или дополнительный сервер для размещения дополнительного сайта. Как обсуждалось ранее, это может быть связано с использованием разных технологических стеков для крупного корпоративного сайта или запуском блога WordPress для ранее существовавшего сайта, отличного от WordPress.
Обратный прокси может помочь в обоих этих случаях, помогая вам получить максимальную отдачу от WordPress, не отказываясь от основного веб-сайта и не начиная заново.