Добавь ^ ко всем rewrite вначале строки.
rewrite ^/get/(.*)$ /get.php?url=$1 last;
При изменении файла меняется его modified date в системе? Если да, то ты можешь сделать так:
location / {
try_files $uri $uri/ =404;
expires modified 365d;
}
Это будет учитывать кеш и обновленный файл, заголовки будут посланы таким образом, что броузер все равно будет делать запрос на файл с заголовком даты своего кеша, если сервер считает что кеш на клиенте идентичен то шлет 304 обрывая соединение (по сути запрос только обменяет заголовки), и клиент грузит файл с кеша.
Такой метод стабильно работает для кеша и решил мне много проблем с очень похожими ситуациями как у тебя.
Относительно аватарок, можно вообще сделать proxy на CDN, и если файл там не найден, но редиректнит обратно на ссылку с запросом генерации аватарки в твоем скрипте. Скрипт сгенерит аватарку выдаст клиенту и паралельно зальет ее на CDN. И следующий запрос получит ее с CDN сразу.