Зачем я начал разделять
Когда у меня были два сайта на одном 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.