В общем, проблема была в правиле
location /uploads/images/ {
, которое срабатывало раньше
location /uploads {
, перенаправляло запрос на апач, тот запускал скрипт, который снова перенаправлял на энжинкс, затем на апач и т.д.
Решил таким путем: в корне сайта создал симлинк на /files с именем dwnld, в конфиге nginx прописал
location /dwnld/ {
internal;
root /var/www/sitename;
}
А в скрипте передаю заголовок вида:
header('X-Accel-Redirect: /dwnld/uploads/file.jpg');
Обращение к файлам извне то же:
http://sitename.com/uploads/file.jpg