Зачем я начал разделять

Когда у меня были два сайта на одном VPS — всё было нормально. Когда сайтов стало шесть, любая проблема одного (рост трафика, ошибка в плагине, медленный запрос) валила соседей. И клиент звонил по поводу сайта, на котором я в эту минуту ничего не делал.

Прокси-слой — это тонкая L7-прослойка между публичным IP и application-сервером. Она позволяет: разделить публичные IP по доменам даже на одном backend, применить per-домен лимиты, терминировать TLS отдельно от приложения, добавить кэш на горячие пути.

Минимальная схема

Два nginx: один proxy (внешний IP, SSL, rate-limit, кэш), второй origin (внутренняя сеть, PHP-FPM или приложение). Между ними — приватный канал, лучше через выделенный сетевой интерфейс или VPN.

[client] → [proxy nginx :443]
              │ SSL, rate-limit, cache
              ▼
           [origin :8080]
              │ PHP-FPM, app
              ▼
           [database]

Идемпотентность proxy

Если у меня два прокси (для отказоустойчивости), они должны быть полностью взаимозаменяемыми. Если они хранят разные кэши — это два разных сайта с точки зрения пользователя. Кэш либо общий, либо короткий настолько, чтобы расхождение было незаметно (10-30 секунд).

Цена

Дополнительная задержка 1-5 мс. Ещё один сервис в мониторинге. Ещё одна конфигурация SSL и HSTS. Если вы не получаете явной выгоды от изоляции — не стройте прокси-слой просто потому что «так делают большие».

Когда прокси становится бутылочным горлом

При тысячах RPS на один прокси-узел начинают вылезать лимиты ядра (ephemeral ports, file descriptors). Это лечится горизонтальным масштабированием прокси-слоя. Но прежде чем масштабировать — измеряйте: часто проблема не в прокси, а в неоптимальном TLS-handshake или отсутствии keep-alive с origin.