Re: Задавать Last-modified на стороне nginx.

Maxim Dounin mdounin at mdounin.ru
Tue Jul 15 21:21:15 UTC 2014


Hello!

On Tue, Jul 15, 2014 at 02:23:19PM -0400, Budulianin wrote:

> Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для
> ответа, который nginx кэширует?
> 
> Можно задавать через add_header Last-Modified $date_gmt;
> Но тогда теряется смысл этого заголовка, потому что при каждом обращении к
> nginx, в заголовке будет новое значение.
> Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304
> не отправят на клиент.
> 
> У статического контента всё просто, Last-modified это дата последнего
> изменения.
> А вот как задать на стороне nginx Last-modified для ответа полученного на
> основе динамической страницы, чтобы он осел в кэше и не изменялся пока не
> будет очередного запроса к бекенду?
> 
> Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше
> nginx и пока он там, проверка If-Modified-Since будет работать и будет
> возвращаться 304.
> Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx?
> Это реально?

Вообще такие вещи должен делать бекенд.  Если он не умеет и нет 
возможности его исправить - в качестве костыля можно за кеширующим 
nginx'ом поставить ещё один (достаточно виртуального сервера в 
рамках того же nginx'а), сделав двойное проксирование, и добавлять 
заголовок Last-Modified там, с помощью add_header.  Тогда в кеш 
будет попадать ответ уже с Last-Modified, и запросы с 
If-Modified-Since будут работать и возвращать 304, пока 
соответствующий ответ в кеше.

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



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