Перейти до вмісту
Гайды 2 хв читання 32 переглядів

Apache як зворотний проксі

Опануйте Apache mod_proxy для налаштування зворотного проксі. Цей посібник охоплює основні конфігурації, балансування навантаження та найкращі практики безпеки.

Apache як зворотний проксі

Apache може функціонувати як зворотний проксі, пересилаючи запити клієнтів до серверів бекенду та повертаючи їхні відповіді, використовуючи модуль mod_proxy та пов'язані з ним підмодулі.

Зворотний проксі діє як посередник для запитів клієнтів, направляючи їх до одного або кількох внутрішніх серверів бекенду. Він представляє єдиний інтерфейс для інтернету, приховуючи внутрішню архітектуру мережі. Переваги включають підвищену безпеку, балансування навантаження, термінацію SSL/TLS, кешування та спрощене керування бекендом.

Увімкнення mod_proxy

Щоб налаштувати Apache як зворотний проксі, необхідно увімкнути основний модуль mod_proxy та специфічні підмодулі. Ці модулі забезпечують підтримку різних протоколів та функцій.

Основні модулі:

  • mod_proxy: Основний проксі-модуль.
  • mod_proxy_http: Для проксіювання HTTP та HTTPS трафіку.
  • mod_proxy_balancer: Необхідний для балансування навантаження між кількома серверами бекенду.
  • mod_proxy_wstunnel: Для проксіювання WebSocket.
  • mod_ssl: Якщо Apache оброблятиме термінацію SSL/TLS для клієнтських з'єднань.

Увімкніть модулі за допомогою команди a2enmod у системах на базі Debian/Ubuntu або розкоментувавши директиви LoadModule у httpd.conf у системах на базі CentOS/RHEL:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod proxy_wstunnel
sudo a2enmod ssl
sudo systemctl restart apache2

Базова конфігурація зворотного проксі HTTP

Основними директивами для зворотного проксі є ProxyPass та ProxyPassReverse. Конфігурація зазвичай розміщується в блоці <VirtualHost> або безпосередньо в httpd.conf.

<VirtualHost *:80>
    ServerName yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>

    # Proxy all requests for /app to a backend server
    ProxyPass /app http://backend-app-server:8080/app
    ProxyPassReverse /app http://backend-app-server:8080/app

    # Proxy all requests for the root path / to another backend
    ProxyPass / http://backend-web-server:8000/
    ProxyPassReverse / http://backend-web-server:8000/

    # For SSL/TLS termination at Apache, and forwarding HTTP to backend
    # RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

Ключові директиви

  • ProxyRequests Off: Це критично важливо. Ця директива вимикає можливості прямого проксі Apache, запобігаючи його використанню як відкритого проксі, що є значним ризиком безпеки. Для зворотного проксі ця директива завжди повинна бути встановлена на Off.
  • ProxyPreserveHost On: Ця директива гарантує, що оригінальний заголовок Host із запиту клієнта передається на сервер бекенду. Якщо встановлено Off, заголовок Host буде встановлено на ім'я хоста та порт сервера бекенду.
  • ProxyPass [path] [url]: Зіставляє локальний шлях URL (path) з URL бекенду (url). Apache перехоплює запити, що відповідають path, і пересилає їх на url.
    • Приклад: ProxyPass /app http://backend-app-server:8080/app означає, що запит до http://yourdomain.com/app/page.html пересилається на http://backend-app-server:8080/app/page.html.
  • ProxyPassReverse [path] [url]: Переписує заголовки Location, Content-Location та URI у відповідях HTTP від сервера бекенду. Це гарантує, що перенаправлення або посилання, згенеровані бекендом, вказують на публічний URL проксі, запобігаючи викриттю клієнтам внутрішніх URL.
  • <Proxy *>: Визначає контроль доступу для самого проксі. Require all granted дозволяє всім клієнтам використовувати проксі. Для посилення безпеки можна дозволити певні IP-адреси або мережі.

Розширені функції mod_proxy

Балансування навантаження

mod_proxy_balancer дозволяє розподіляти вхідні запити між кількома серверами бекенду, підвищуючи доступність та масштабованість.

<VirtualHost *:80>
    ServerName app.yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy balancer://mycluster>
        BalancerMember http://backend1.internal:8080 route=1 loadfactor=10
        BalancerMember http://backend2.internal:8080 route=2 loadfactor=10
        # Optional: ProxySet for specific balancer settings
        ProxySet lbmethod=byrequests stickysession=JSESSIONID nofailover=Off
        # For session stickiness, the backend must set a cookie like JSESSIONID
    </Proxy>

    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/

    <Location "/balancer-manager">
        SetHandler balancer-manager
        Require ip 192.168.1.0/24 # Restrict access to internal network
    </Location>
</VirtualHost>

Атрибути BalancerMember

| Атрибут | Опис |

Оновлено: 04.03.2026
Назад до категорії

Читайте також

Гайды 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Гайды 1 хв

Як автоматизувати купівлю проксі через API

Автоматизація купівлі та управління проксі через API провайдерів: інтеграція, моніторинг використання та автопоновлення.

Гайды 1 хв

Створення інформаційної панелі моніторингу проксі в Grafana

Покрокове створення інформаційної панелі для моніторингу проксі в Grafana: метрики,

Гайды 1 хв

Як тестувати проксі перед покупкою

Чек-лист тестування проксі перед покупкою: швидкість, стабільність, анонімність, гео та сумісність з ціллю

Гайды 1 хв

Як налаштувати липкі сесії через проксі

Липкі сесії: підтримка однієї IP-адреси протягом усієї сесії, налаштовуються через провайдера та самостійно.

Гайды 1 хв

Використання проксі з Camoufox

Camoufox — це модифікований Firefox для обходу антиботів. Налаштування проксі, відбиток та режим невидимості.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.