Можно ли использовать HAProxy в качестве прокси-сервера для обработки как HTTP, так и HTTPS трафика одновременно?

  • 5 сентября 2023 г. 14:26
Ответы на вопрос 2
Да, HAProxy можно использовать в качестве прокси-сервера для обработки как HTTP, так и HTTPS трафика одновременно.

Для настройки HAProxy в качестве SSL-прокси и перенаправления HTTPS-трафика на новый сервер, вам потребуется выполнить следующие шаги:

1. Создайте SSL-сертификат для вашего нового сервера. Это может быть самоподписанный сертификат или сертификат, выданный центром сертификации.

2. В конфигурационном файле HAProxy добавьте следующие строки для настройки frontend и backend:

```
frontend https_frontend
    bind *:443 ssl crt /path/to/certificate.pem
    mode tcp
    option tcplog
    default_backend https_backend

backend https_backend
    mode tcp
    option tcplog
    server new_server <new_server_ip>:<new_server_port>
```

Замените `/path/to/certificate.pem` на путь к вашему SSL-сертификату.

3. Перезапустите HAProxy для применения настроек.

Теперь HAProxy будет слушать входящий HTTPS-трафик на порту 443, проксировать его на новый сервер и выполнять роль SSL-прокси.

Обратите внимание, что в этой конфигурации HAProxy работает в режиме TCP, поскольку он не выполняет функции HTTP-анализатора. 
1. Для обеспечения безопасности SSL соединения перед фронтендом, вы можете добавить второй фронтенд в режиме TCP, который будет маршрутизировать трафик на бэкэнды с использованием списка на основе совпадения TLS SNI.
2. В этом втором фронтенде вы можете установить правило доступа (ACL) для сервера, который требует HTTPS, и указать его имя SNI, а также определить бэкэнд в зависимости от совпадения условия. Остальной трафик будет отправлен на второй фронтенд, который работает с SSL.
3. Второй фронтенд будет терминировать SSL и распределит трафик на соответствующие бэкэнды. То есть схема работы следующая: Интернет -> TCP фронтенд -> Фильтрация трафика по SNI с помощью ACL, если фильтрация не пройдена, то трафик будет направлен на бэкэнд по умолчанию на localhost:port2, где работает второй haproxy с HTTP фронтендом -> Терминиация SSL -> Распределение трафика на бэкэнды по имени. Если фильтрация пройдена, то происходит перенаправление на SSL бэкэнд на порт 443.
Похожие вопросы