Обратный прокси-сервер Apache — настройка с помощью модуля mod_proxy

Обратный прокси-сервер Apache — настройка с помощью модуля mod_proxy Изучение

Внедрив обратный прокси-сервер в качестве дополнительного уровня защиты, вы можете повысить надежность своего веб-приложения и минимизировать риск атак. HTTP-сервер Apache имеет множество модулей и расширений, которые поддерживают различные функции прокси. В нашем руководстве мы шаг за шагом объясняем, как настроить обратный прокси-сервер Apache.

Что такое mod_proxy?

Apache — это известный и широко используемый веб-сервер с открытым исходным кодом, который используется для обслуживания веб-контента в Интернете. Он доступен во многих операционных системах, таких как Windows, Linux и macOS, и его можно гибко расширять с помощью плагинов и модулей.

Модуль mod_proxy позволяет веб-серверу Apache действовать как обратный прокси-сервер, перенаправляя запросы на другой сервер и возвращая ответ клиенту. Это полезно, например, если у вас несколько веб-серверов и вы хотите сбалансировать нагрузку между ними. Это позволяет повысить производительность или построить архитектуру высокой доступности.

Apache mod_proxy состоит из нескольких модулей, каждый из которых имеет свои собственные функции. Вот некоторые из наиболее важных модулей :

  • mod_proxy : обеспечивает основные функции обратного прокси-сервера и перенаправляет запросы на другой сервер.
  • mod_proxy_http : предоставляет возможности прокси для протоколов HTTP и HTTPS.
  • mod_proxy_ftp : Имеет функции прокси для протокола FTP.
  • mod_proxy_connect : для зашифрованных соединений SSL
  • mod_proxy_ajp : используется для пересылки запросов на серверы приложений с поддержкой AJP.
  • mod_proxy_wstunnel : для использования веб-сокетов.
  • mod_proxy_balancer : обеспечивает возможности балансировки нагрузки.
  • mod_cache : поддерживает различные методы кэширования.
  • mod_headers : для изменения строк заголовка HTTP.
  • mod_deflate : сжимает HTTP-ответы.

Настройка обратного прокси Apache: пошаговая инструкция

В этом руководстве предполагается, что в вашей системе уже установлен Apache. Подробную информацию о том, как настроить веб-сервер Apache, вы можете найти в нашем руководстве.

Шаг 1. Обновите индекс пакета.

Сначала вам следует обновить список доступных пакетов.

Введите следующую команду в терминале:

$ sudo aptitude update

Затем обновите установленные пакеты в вашей системе:

$ sudo aptitude upgrade -y

Шаг 2. Загрузите основные инструменты сборки

Далее мы установим Essential Build Tools. Это набор инструментов и библиотек, необходимых для сборки и компиляции приложений в Linux.

$ sudo aptitude install -y build-essential

Шаг 3. Установите модули и зависимости

Читайте также:  10 лучших идей C++ проекта для начинающих

Теперь мы можем скачать и установить модули и библиотеки, необходимые для обратного прокси-сервера Apache.

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev

Шаг 4. Активируйте модули

Прежде чем активировать расширения, следует проверить, правильно ли они установлены. Следующая команда покажет вам список доступных модулей:

$ a2enmod

команда a2enmod в терминале

команда a2enmod в терминале

Когда вы запустите команду, a2enmodвас спросят, какие модули вы хотите установить. Вы можете перечислить нужные вам расширения в одной строке:

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

Вы также можете активировать каждый модуль отдельно:

$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod headers
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html

Некоторые модули активны по умолчанию. При a2enmodэтом убедитесь, что они действительно разблокированы.

Шаг 5. Измените конфигурацию по умолчанию.

Чтобы реализовать функции прокси-сервера веб-сервера Apache, нам необходимо отредактировать файл конфигурации по умолчанию 000-default.conf в каталоге /etc/apache2/sites-enabled.

$ nano /etc/apache2/sites-enabled/000-default.conf

Настраиваем виртуальный хост-прокси с расширениями mod_virtualhost и mod_proxy. Вы можете настроить код в соответствии с вашими потребностями.

<VirtualHost *:*>
        ProxyPreserveHost On

        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/

        ServerName localhost
    </VirtualHost>

Нажмите Ctrl+ Xи Y, чтобы сохранить изменения и закрыть текстовый редактор.

Шаг 6. Настройте балансировку нагрузки

Если вы используете несколько внутренних серверов, рекомендуется распределять нагрузку с помощью балансировки нагрузки.

Вы можете использовать следующий код в качестве шаблона и добавить его в файл конфигурации по умолчанию:

<Proxy balancer://mycluster>
        # Define back-end servers:

        # Server 1
        BalancerMember http://0.0.0.0:8080/

        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </Proxy>

    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load

        ProxyPass / balancer://mycluster
    </VirtualHost>

Шаг 7. Настройте поддержку SSL

Если вы хотите использовать Apache SSL для зашифрованных соединений и сертификатов, вам необходимо включить второй виртуальный хост.

Listen 443

    NameVirtualHost *:443
    <VirtualHost *:443>

        SSLEngine On

        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem


        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/

        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name

    </VirtualHost>

Шаг 8. Перезапустите Apache.

Читайте также:  "Топ языков программирования для веб-разработки и рекомендации по выбору"

После завершения настройки вам следует перезапустить веб-сервер Apache, чтобы изменения вступили в силу.

$ service apache2 restart

Теперь обратный прокси-сервер Apache должен пересылать запросы на ваши внутренние серверы.

Оцените статью
Блог о программировании
Добавить комментарий