f802a5ac46
Веб-SAC остаётся за allowlist; sac-api.kalinamall.ru открыт для мобильных клиентов. Документация по connection coalescing Git+SAC. Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
4.0 KiB
Markdown
74 lines
4.0 KiB
Markdown
# Установка HAProxy и развёртывание конфигурации
|
||
|
||
Для этого репозитория нужен HAProxy **не ниже 2.4**. Конструкции `req_ssl_sni` и `tcp-request content accept` (разбор ClientHello для SNI в TCP-режиме) входят в штатные сборки **2.8.x** из Ubuntu 24.04 и во все актуальные ветки **3.x**.
|
||
|
||
## Вариант 1: пакет из репозитория Ubuntu (HAProxy 2.8.x)
|
||
|
||
Обычно этого достаточно для данного конфига:
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install -y haproxy
|
||
haproxy -v
|
||
```
|
||
|
||
Проверьте, что версия **2.4+** (на Noble обычно **2.8.x**).
|
||
|
||
## Вариант 2: последняя ветка 3.x (PPA Vincent Bernat)
|
||
|
||
Актуальные пакеты **HAProxy 3.3.x** для Noble публикуются в PPA [vbernat/haproxy-3.3](https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-3.3) (номер микроверсии может обновляться; см. страницу PPA). Не подключайте одновременно несколько PPA с разными ветками HAProxy.
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install -y software-properties-common
|
||
sudo add-apt-repository -y ppa:vbernat/haproxy-3.3
|
||
sudo apt update
|
||
sudo apt install -y haproxy
|
||
haproxy -v
|
||
sudo systemctl enable --now haproxy
|
||
```
|
||
|
||
Другие ветки того же автора (при необходимости): [haproxy-3.2](https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-3.2), [haproxy-3.1](https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-3.1), [haproxy-3.0](https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-3.0), а также [haproxy-2.8](https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-2.8) — всегда выбирайте **одну** строку версии.
|
||
|
||
## Проверка синтаксиса конфига
|
||
|
||
```bash
|
||
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||
```
|
||
|
||
## Установка конфигурации из репозитория
|
||
|
||
1. Убедитесь, что установлен HAProxy **2.4+** (см. разделы выше).
|
||
|
||
2. Скопируйте `haproxy.cfg` и файлы allowlist в `/etc/haproxy/`. Пример, если репозиторий лежит в домашнем каталоге:
|
||
|
||
```bash
|
||
sudo cp ~/reverse-proxy/haproxy.cfg /etc/haproxy/haproxy.cfg
|
||
sudo cp ~/reverse-proxy/git-sac-allowed ~/reverse-proxy/1c-allowed /etc/haproxy/
|
||
```
|
||
|
||
3. Проверка и перезапуск:
|
||
|
||
```bash
|
||
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||
sudo systemctl reload haproxy
|
||
```
|
||
|
||
## Проверка `ssl verify none` на бэкендах
|
||
|
||
В `backend` для 443 указано `ssl verify none`, чтобы health-check и при необходимости установка соединения не ломались на внутренних именах/SAN. Если вы выпустите внутренние доверенные CA и зададите их в системе, можно включить проверку (`verify required` + `ca-file`).
|
||
|
||
## Порты на фаерволе
|
||
|
||
На хосте с HAProxy с интернета обычно открывают только то, что слушает конфиг: **25**, **443** (и при использовании — **8404** для stats). Остальной трафик — по политике безопасности.
|
||
|
||
Если позже добавите фронтенд на **80** для ACME (см. [letsencrypt-acme.md](letsencrypt-acme.md)), откройте и **TCP 80**.
|
||
|
||
## SAC и Seaca (sac-api)
|
||
|
||
- Веб-SAC: **`sac.kalinamall.ru`** — IP из **`git-sac-allowed`**
|
||
- Seaca (Android): **`sac-api.kalinamall.ru`** — без allowlist; добавьте **A**-запись на тот же IP HAProxy
|
||
- На nginx SAC (**192.168.160.145**): `server_name sac.kalinamall.ru sac-api.kalinamall.ru;`
|
||
|
||
Подробнее: [sac-access.md](sac-access.md).
|