Внедрив обратный прокси-сервер в качестве дополнительного уровня защиты, вы можете повысить надежность своего веб-приложения и минимизировать риск атак. 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. Установите модули и зависимости
Теперь мы можем скачать и установить модули и библиотеки, необходимые для обратного прокси-сервера Apache.
$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
Шаг 4. Активируйте модули
Прежде чем активировать расширения, следует проверить, правильно ли они установлены. Следующая команда покажет вам список доступных модулей:
$ 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 должен пересылать запросы на ваши внутренние серверы.








