Re: Задать время кэша для отдельного файла

Maxim Dounin mdounin на mdounin.ru
Чт Окт 22 20:46:43 UTC 2015


Hello!

On Thu, Oct 22, 2015 at 08:54:59AM -0400, grey wrote:

> На сервере есть папка /images/. Для нее в конфиге настроено кэширование на 3
> дня:
> 
> 	location ~* ^/images/.+.(jpg|jpeg|gif)$ {
> 		root /wwwroot/site.ru/;
> 		expires 3d;
> 	}
> 
> В этой же папке лежит файл 404.jpg, его php скрипты отдают тогда, когда
> страница не найдена. Сам скрипт:
> 
> 	header("X-Accel-Redirect: /images/404.jpg");
> 
> Хотелось бы для этого файла поставить время кэширования отличное от 3 дней.

Проще и правильнее всего так:

    location = /images/404.jpg {
        expires epoch;
    }

Подробнее о том, как писать location'ы, можно почитать тут:

http://nginx.org/r/location/ru

> Пробовал делать:
> 
> 	header ("Expires: ".gmdate("D, d M Y H:i:s \G\M\T", time()*846000));
> или
> 	header ("X-Accel-Expires: 864000");
> 	header ("X-Accel-Redirect: /images/404.jpg");
> 
> не получается. nginx игнорирует заголовки.

Заголовок Expires из исходного ответа с X-Accel-Redirect при 
перенаправлении добавлен к заголовкам ответа.  Однако директива 
expires в вашем конфиге - заменит его на то, что указано в ней.  
Потому и не получается.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru