1) HEAD должен отрабатываться нормально без дополнительных настроек:
fastcgi_cache_key "...$request_method...", то есть, у бэкенда всё равно запрашивается GET, полный ответ кэшируется и отдаётся только заголовок.
Наверное, это только недавно появилось в новой версии? С какой? У меня nginx/0.7.62. Там HEAD прекрасно ложится в кэш-файл, проверено руками.
2) 304, $http_if_modified_since, $http_if_none_match, etc.: Строки If-Modified-Since, If-Range, Range, etc. вырезаются из запроса
к бэкенду, поэтому всегда кэшируется полный ответ. Клиенту же возвращется то, что он попросил.
Видимо, это тоже в новой версии только. Подскажите, пожалуйста, в какой?