depends_on + healthcheck в docker-compose. Просто depends_on недостаточно - нужно проверять работоспособность сервиса, а не просто что контейнер запустился.
Как бы сделал я - настроил отдачу разных IP для DNS-запросов из цивилизованных стран и всех остальных. Первым бы отдавал Lets's Encrypt, вторым - что их высокоблагородие пожелает. Тогда можно и nginx православный юзать, и шифры, и ОС - не влияя на работу уже настроенного.
Можно делать по-разному, но задумайтесь сразу, как эти сертификаты будут обновляться (очевидно, нужен отдельный контейнер с certbot'ом) и как nginx будет узнавать, что ему нужно сделать релоад после обновления.
Вам нужен не доступ к сервисам, а развёрнутый сокращатель ссылок. То, что вы пытаетесь сделать, рано или поздно превратится в некрасивую простыню в конфиге.
Prior to this date we will have added CRL URLs to certificates
On this date we will drop OCSP URLs from certificates
On this date all requests including the OCSP Must Staple extension will fail
Надо отталкиваться от прикладных последствий. "Всплески входящих соединений" как-то влияют на работоспособность системы? Если нет - ограничивать коннекты преждевременно (ну, разве что как-то на грани здравого смысла, типа 50 запросов в секунду на пользователя).
1. Выпускаете сертификат на новом сервере (если хочется бесшовно - через DNS-challenge или запроксировав каталог .well-known/acme-challenge на новый сервер).
2. Переключаете А-запись домена на новый сервер, проверяете, что всё работает.
3. Делаете certbot delete на старом сервере.
Куча лишнего. Не нужен тут ни root_path, ни "none blocked". Хотите, чтобы запросы проходили только с определённых сайтов, оставьте в valid_referers только нужные домены. Если это те же домены, про которые конфиг - есть специальный аргумент server_names.
Написать локейшен с регулярным выражением, срабатывающим только на урлы вида *.(jpg|png|что-там-ещё-у-вас). Внутрь локейшена засунуть try_files, который в какой-то момент будет дёргать PHP-скрипт.