Сказать в заголовках отдаваемых ресурсов, что их нельзя кэшировать (плохой способ), либо отдавать при изменениях разные урлы на файлы, присоединив к ним, например, параметр типа example.com/style.css?v=2020070201.
З.Ы. - nginx рестартовать нужно в крайне редких случаях, юзайте reload.
Нестандартные порты для HTTP - это костыль. Я бы, честно говоря, просто перевесил служебный сайт на другой домен и настроил аналогичный редирект на HTTPS.
Возможно, у нгинкса и есть какой-то кастомный модуль для проксирования FTP, но я порекомендовал бы сделать это стандартным для линукса образом - с помощью iptables или аналогичного ПО.
Как сделать так, чтобы на 10.3.3.3 всегда приходил запрос с 3.3.3.3, а не с 2.2.2.2 или ip клиента ?
Вы говорите про пакет на сетевом уровне или HTTP-заголовок? В первом случае - подменить на уровне ОС, во втором - нгинксом подменить соответствующий заголовок.
Или другой путь - может ли Nginx добавить специфичный HTTP-хедер в запросы от таких ботов? Тогда я изменю выдачу на уровне веб-приложения.
Конечно. Отправляйте ботов в другой локейшен, который при проксировании вовнутрь будет добавлять заголовок или вовсе - перенаправлять запросы на другой урл или порт. Директива proxy_set_header.