Что такое Apache Proxy Server?
Apache HTTP Server – мощный веб-сервер, способный работать как прокси для перенаправления трафика между клиентами и серверами. В прокси-режиме Apache выступает посредником, обрабатывая запросы и передавая их другим ресурсам. Это позволяет:
- Кэшировать контент для ускорения загрузки
- Балансировать нагрузку между серверами
- Обеспечивать безопасность бэкенд-систем
- Объединять несколько сервисов под одним доменом
Предварительная настройка Apache
Перед конфигурацией убедитесь:
- Установлен Apache 2.4+ (команда:
sudo apt install apache2
) - Активированы модули:
sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
- Проверьте конфигурацию:
apache2ctl configtest
Базовый прокси-сервер за 5 шагов
- Откройте конфиг:
sudo nano /etc/apache2/sites-available/000-default.conf
- Добавьте в секцию VirtualHost:
ProxyPass "/app" "http://backend-server:8080/" ProxyPassReverse "/app" "http://backend-server:8080/"
- Сохраните изменения (Ctrl+X → Y)
- Перезагрузите Apache:
sudo systemctl reload apache2
- Проверьте доступность по адресу: http://ваш-сервер/app
Балансировка нагрузки
Для распределения запросов между серверами:
<Proxy balancer://mycluster> BalancerMember http://server1:80 BalancerMember http://server2:80 </Proxy> ProxyPass "/" balancer://mycluster/
Обратный прокси с SSL
Защита бэкенд-серверов с шифрованием:
SSLProxyEngine On ProxyPass "/secure/" "https://internal-app:443/" ProxyPassReverse "/secure/" "https://internal-app:443/"
Оптимизация производительности
- Включите кэширование:
mod_cache
- Настройте таймауты:
Timeout 300
- Лимитируйте соединения:
MaxKeepAliveRequests 100
- Используйте gzip-сжатие:
mod_deflate
Безопасность прокси
- Ограничьте доступ по IP:
Require ip 192.168.1.0/24
- Обновляйте Apache регулярно
- Используйте HTTPS для всех соединений
- Запретите ненужные методы:
LimitExcept GET POST
FAQ: Частые вопросы
Как проверить работоспособность прокси?
Используйте curl -I http://ваш-сервер
для проверки заголовков ответа. Убедитесь в отсутствии ошибок 502/503.
Почему не применяются изменения конфигурации?
Проверьте:
- Перезагружен ли Apache (
sudo systemctl reload apache2
) - Отсутствие синтаксических ошибок (
apache2ctl configtest
) - Активность модулей (
apache2ctl -M | grep proxy
)
Как настроить прокси для WebSocket?
Добавьте в конфиг:
RewriteEngine On RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) ws://backend:8080/$1 [P]
Чем отличается Forward и Reverse Proxy?
Forward: Клиент → Прокси → Интернет (для доступа наружу). Reverse: Клиент → Прокси → Внутренние серверы (для защиты бэкенда).