Внесены правки в документацию
This commit is contained in:
@@ -40,6 +40,10 @@ Notification paths внутри `/api/` ВМ1 имеют отдельные edge
|
||||
|
||||
Query не участвует в exact location matching: URL штатного робота `/bitrix/sync/webhook/<type>?token=...&ID=...` попадает в соответствующий exact route. До proxy nginx проверяет непосредственный source IP по version-controlled `BITRIX_WEBHOOK_ALLOWED_CIDRS`; пустой/невалидный список при enabled receiver блокирует deployment. Адрес из недоверенного `X-Forwarded-For` не используется. При внешнем LB сначала настраиваются его trusted CIDR и нормализация real IP.
|
||||
|
||||
`BITRIX_SYNC_ENABLED`, public route, readiness и allow-list согласуются одним
|
||||
preflight: disabled требует `deny all;`, enabled — reviewed non-empty CIDR и
|
||||
ready receiver. Обратные комбинации блокируют deployment.
|
||||
|
||||
Запрос вне allow-list получает generic `403` без proxy. В безопасном журнале с ограниченным retention сохраняются только timestamp, source IP, route class и outcome; query/body не сохраняются. Telemetry pipeline экспортирует `webhook_rejected_total{receiver,reason="source_ip"}` без IP label. Allow-list не расширяется автоматически: всплеск Contact, восстановленных инкрементальной reconciliation, инициирует проверку rejected-IP журнала, подтверждение принадлежности адреса Битрикс24 и reviewed reload конфигурации.
|
||||
|
||||
## 3. Upstreams
|
||||
@@ -51,6 +55,11 @@ Nginx ВМ2 имеет независимые server blocks:
|
||||
- public `80/443` на отдельном DNS host: ACME/redirect и два exact CRM webhook;
|
||||
- private `8443` с сертификатом internal CA: только server-to-server Message Safety и approved ops.
|
||||
|
||||
Private `8443` также fail-closed: до утверждённого Safety cutover active
|
||||
caller allow-list содержит только `deny all;`; после cutover он совпадает с
|
||||
SG/host-firewall источниками ВМ1. Расхождение любого из трёх слоёв блокирует
|
||||
rollout.
|
||||
|
||||
| Path | Local upstream | Caller |
|
||||
|---|---|---|
|
||||
| `/internal/safety/v2/*` | `message-safety-api:8080` | api-backend ВМ1 |
|
||||
@@ -93,6 +102,10 @@ Renew container/host timer выполняет `certbot renew` минимум д
|
||||
master-процессу `docker compose kill -s HUP nginx`. Bare-команды `nginx -t` и
|
||||
`nginx -s reload` запрещены: контейнер read-only, а рабочие config/PID находятся
|
||||
в `/tmp`. При ошибке остаётся старый worker/config/cert и срабатывает alert.
|
||||
Успешный deploy/renew hook возвращает `0` с пустым stderr: вывод успешного
|
||||
`nginx -t` и progress signal command перехватывается или подавляется; при
|
||||
ошибке сохранённая диагностика полностью печатается в stderr. Любой stderr на
|
||||
success path считается дефектом интеграции с Certbot.
|
||||
Контролируются expiry days и последняя успешная попытка. Staging CA используется
|
||||
в rehearsal, чтобы не исчерпать лимиты.
|
||||
|
||||
@@ -219,6 +232,9 @@ Bitrix placement может требовать embedding: для exact `/bitrix/
|
||||
- внутренний `GET /nginx-health/live` возвращает static 200 и доступен Docker healthcheck;
|
||||
- внешний health публикуется только если нужен мониторингу, с allow-list;
|
||||
- nginx health не утверждает готовность upstream;
|
||||
- Docker healthcheck использует только binary, гарантированно присутствующий
|
||||
и проверенный внутри exact pinned nginx digest; `wget`/`curl` запрещены, если
|
||||
их наличие не подтверждено image inventory;
|
||||
- внешняя synthetic проверка отдельно проверяет TLS, redirect, public API, auth discovery и callback route;
|
||||
- upstream `/health/ready` не агрегируется публично без решения ops.
|
||||
|
||||
@@ -259,7 +275,12 @@ Image и modules pin по digest/version. Render использует allow-list
|
||||
|
||||
`nginx` подключён к `public` и `backend`, публикует `${NGINX_HTTP_PORT}:80`, `${NGINX_HTTPS_PORT}:443`; filesystem read-only, tmpfs для cache/run/temp, non-root где позволяет bind ports/capabilities. Cert/static volumes read-only. ACME client имеет только необходимые volumes/network.
|
||||
|
||||
`depends_on` health не заменяет retry: nginx может стартовать при временно недоступном upstream и отдавать 502, затем восстановиться без reload. Resource/FD limits учитывают WS.
|
||||
`depends_on` health не заменяет retry/readiness. После healthy upstream
|
||||
обязателен config test с production service DNS names и reload/recreate nginx.
|
||||
После recreate upstream повторяется reload policy либо используется явно
|
||||
протестированный dynamic resolver. Nginx может временно отдавать bounded 502,
|
||||
но не считается ready до этой post-ready проверки. Resource/FD limits
|
||||
учитывают WS.
|
||||
|
||||
## 17. Failure behavior
|
||||
|
||||
|
||||
Reference in New Issue
Block a user