Введение
Настройка Apache в качестве обратного прокси-сервера означает настройку Apache для прослушивания и направления веб-трафика на серверы или внутренние службы. Это может помочь вам управлять и балансировать нагрузку на ваши серверы, повышать безопасность и повышать эффективность ваших веб-сервисов. Вы также можете настроить его для прослушивания запросов на стандартных портах HTTP и HTTPS и перенаправления их на серверные службы, работающие на разных портах.
В этом руководстве мы покажем вам, как настроить Apache в качестве обратного прокси-сервера, выполнив простые шаги. Даже если вы новичок в этой области, не волнуйтесь — мы упростим понимание и отслеживание. В конечном итоге у вас будет работающий обратный прокси-сервер, который поможет вашим веб-приложениям работать без сбоев.
Сетевой сценарий
Представьте, что у вас установлен Apache на сервере, к которому каждый может получить доступ из Интернета. Apache прослушивает трафик через обычные порты HTTP и HTTPS. У вас также есть несколько приложений:
- Приложение работает на том же сервере, что и Apache, но использует другой порт, например 3000.
- Другие приложения работают на другом сервере в той же сети, но этот сервер недоступен из Интернета.
Итак, приступим к настройке:
Шаг 1. Настройка прокси-модуля Apache
По умолчанию этот модуль включен в Apache для пользователей, которые установили его с помощью пакетов rpm. Пользователи Debian должны включать модули вручную.
Системы на базе RedHat: отредактируйте файл конфигурации прокси-сервера /etc/httpd/conf.modules.d/00-proxy.conf, раскомментируйте следующие записи. Если они недоступны, добавьте их:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Системы на базе Debian: используйте следующую команду, чтобы включить модуль прокси с Apache.
sudo a2enmod proxy proxy_http
После включения модулей вам потребуется перезапустить службы Apache, чтобы изменения немедленно вступили в силу.
Шаг 2. Настройте виртуальный хост Apache.
Теперь он начнет работать с виртуальным хостом. Мы создаем три виртуальных хоста, как показано ниже. Вы создаете только то, что необходимо, с необходимыми модификациями. Отредактируйте основной файл конфигурации Apache и начните настройку.
Обратный прокси для локального приложения
Чтобы перенаправить все запросы, отправленные на www.yourdomain.com, серверному приложению, работающему локально на порту 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on port 3000 on the same server
ProxyPass /http://localhost:3000/ProxyPassReverse /http://localhost:3000/# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратный прокси-сервер на локальный со вторичным URL-адресом
Чтобы переслать URL-адрес определенного подкаталога серверному приложению. Например, чтобы перенаправить все запросы, отправленные на www.yourdomain.com/api, серверному приложению, работающему локально на порту 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on port 3000 on the same server
ProxyPass /api http://localhost:3000/ProxyPassReverse /api http://localhost:3000/# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратный прокси-сервер для серверного хост-приложения
Чтобы перенаправить все запросы, отправленные на www.yourdomain.com, серверному приложению, работающему на другом сервере (IP 192.168.1.100) на порту 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on a different server
ProxyPass /http://192.168.1.100:3000/ProxyPassReverse /http://192.168.1.100:3000/# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратный прокси для нескольких серверных приложений
Чтобы перенаправить запросы к различным серверным приложениям по URL-адресу, например, перенаправьте запросы на www.yourdomain.com/app1 приложению на порту 3000 и перенаправьте запросы на www.yourdomain.com/app2 приложению на порту 5000 на другом сервер (IP 192.168.1.100):
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for different applications
ProxyPass /app1 http://localhost:3000/ProxyPassReverse /app1 http://localhost:3000/ProxyPass /app2 http://192.168.1.100:5000/ProxyPassReverse /app2 http://192.168.1.100:5000/# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратный прокси для применения на разных портах
Чтобы перенаправить запросы к разным серверным приложениям на одном сервере, но на разные порты, например, перенаправьте запросы на www.yourdomain.com/app1 приложению на порту 3000 и перенаправьте запросы на www.yourdomain.com/app2 приложению на порт 5000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for different applications
ProxyPass /app1 http://localhost:3000/ProxyPassReverse /app1 http://localhost:3000/ProxyPass /app2 http://localhost:5000/ProxyPassReverse /app2 http://localhost:5000/# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Шаг 3. Перезапустите Apache, чтобы применить изменения.
После успешного создания виртуального хоста Apache вам необходимо перезапустить службу Apache. Используйте следующие команды, чтобы перезапустить службу Apache в зависимости от вашей операционной системы.
Системы на базе Дебеда:
sudo systemctl restart httpd
Системы на базе RedHat:
sudo systemctl restart apache2
Заключение
Я надеюсь, что это руководство поможет вам понять, как использовать обратный прокси-сервер в Apache. Настройка Apache в качестве обратного прокси-сервера может помочь вам более эффективно управлять вашими веб-приложениями. Если вам необходимо направить трафик на локальные приложения или разные серверы, настройка обратного прокси-сервера может повысить производительность и безопасность вашей системы. Следуя примерам, приведенным в этом руководстве, вы сможете легко настроить и настроить собственный обратный прокси-сервер в соответствии с вашими конкретными потребностями.