Если предполагается доступ только из определённых мест - любая форма авторизации подойдёт, те же токены. Если набор сайтов невелик и меняется не особенно часто - можно просто прикрыть по IP и периодически их список актуализировать.
Это вполне нормально, особенно если ваша учётная запись достаточно защищена (сложный пароль/ключ, защита от брутфорса, ограничение на SSH-коннекты по IP и т. д). По меньшей мере - это не страшнее, чем эксплоит CMS, который вообще даст доступ со служебной учётной записью.
Настраивайте кэширование, точнее - его отсутствие для определённых урлов. Либо - добавляйте к урлам параметр, изменяющийся после обновления: https://example.com/somepage.html?2021011401
Ваш вариант не работает, потому что, видимо, снаружи этого локейшена не предусмотрена никакая обработка. Либо продублируйте внутри то, что происходит на остальном сайте, либо сделайте этот локейшен вложенным в основной.
Если проброшены порты и у домена заведена А-запись, указывающая на белый адрес роутера - всё должно работать.
Какую ошибку вы получаете при попытке подключиться? Видно ли что-то в логах? Не пытаетесь ли вы, кстати говоря, попасть на сайт по внешнему адресу изнутри этой же сети - так будет работать далеко не всегда.
Это, в целом, задача не нгинкса, а бэкэнда - что-то менять в зависимости от пользователя. И, как верно заметили выше - куки для этого подходят куда больше.
Порт уберите к вашим сокетам - и всё заработает. Он совершенно лишний в данном случае. Проксируйте его через тот же нгинкс, просто в отдельном локейшене.
Вставлять в тот кусок конфига, где вы хотите, чтобы данные правила действовали. Если я правильно понимаю, ваше правило может быть заменено на директиву try_files.
Так же, как к нгинксу в составе любого другого ПО - выпускаете сами или покупаете сертификат, добавляете соответствующие директивы в конфиг, делаете reload.
Для начала заблокировать особенно активные подсети. Потом, в более спокойной обстановке - добавлять капчу, оптимизировать производительность, настраивать fail2ban.