Включил отладочный лог nginx и разобрался сам.
Причиной была ошибка в конфиге nginx: для каталога /attach не был указан alias, из-за чего nginx не находил нужный файл в том запросе, где был задан свой Content-Type.
Т.е. было так:
location /attach/ {
internal;
}
а надо было вот так:
location /forum/attach/ {
alias /home/mysite.com/www/attach/;
internal;
}
А для файла с расширением gif сразу было все хорошо т.к. nginx находил его по другому правилу:
location ~* ^.+\.(jpg|jpeg|gif|png)$ {
root /home/mysite.com/www/;
}
Спасибо всем!