Чтобы стратегия очистки кэша работала для связанных ресурсов (файлов JavaScript и т. Д.), Как вы ее описали, вам нужно убедиться, что браузеры всегда имеют свежую копию index.html.
Вот один консервативный способ достичь того, что вам нужно.
Установите блок location
только для файлов HTML и отдельный блок местоположения для других ресурсов, которые имеют хэш содержимого в своих именах файлов. Для HTML-файлов вам нужно:
add_header Cache-Control "no-store";
Для ресурсов с хэшем содержимого в именах файлов используйте:
add_header Cache-Control "max-age: 31536000";
Чтобы ответить на ваш вопрос о том, достаточно ли отправки ETag для ваших файлов index.html, ответ - нет. Без заголовка Cache-Control браузеры используют свой собственный алгоритм для принятия решения, извлекать ли данные из собственного кэша или подключать к сети заголовок запроса If-None-Match для проверки копии, которая у них уже есть.
Примечание: я не знаком с try_files, но вам нужно убедиться, что, если try_files внутренне перенаправляет на другой блок местоположения, этот последний блок местоположения добавляет правильные заголовки.