Re: expires и cache-control:no-store одновременно?

vgoncharov nginx-forum на nginx.us
Пт Май 7 21:55:50 MSD 2010


Никита, привет.

Ты невнимательно прочитал вопрос.

>> Хочу, чтобы nginx отдавал ответы с такими
>> заголовками:
>> Date: текущие дата и время сервера
>> Expires: Тоже самое, что в Date
>> Cache-Control: max-age=0, no-store

> expires off;
> add_header Expires
> <то-что-вам-там-надо>
> add_header Cache-Control no-store;

Чтобы это решение работало я должен буду раз в секунду переписывать конфиг и рестартовывать nginx.
Вы меня сочтете извращенцем, но тут что-то есть не то.

Мне надо в заголовке получать:
Date: ТЕКУЩЕЕ_ВРЕМЯ_НА_СЕРВЕРЕ
Expires: ТЕКУЩЕЕ_ВРЕМЯ_НА_СЕРВЕРЕ
Cache-Control: max-age=0, no-store

В Apache это делается очень просто.

Как это сделать в nginx я не нашел ни в документации, ни опытным путем.
Поэтому обраился за помощью на этот форум.

Детально проблема заключается в том, что "Expires: ТЕКУЩЕЕ_ВРЕМЯ_НА_СЕРВЕРЕ" может установить только модуль expires (директива expires). Правильно?

Затем Cache-Control можно уставить модулем headers (директива add_header).

Однако, модуль expires сносит работу модуля headers и вместо того, чтобы ДОБАВИТЬ max-age=0 к созданному с помощью add_header Cache-Control, он (модуль expires) УДАЛЯЕТ Cache-Control и создает свой.

Таким образом, я нахожу, что в NGINX невозможно создать такую комбинацию заголовков:

Date: ТЕКУЩЕЕ_ВРЕМЯ_НА_СЕРВЕРЕ
Expires: ТЕКУЩЕЕ_ВРЕМЯ_НА_СЕРВЕРЕ
Cache-Control: max-age=0, no-store, etc

Прошу опровергнуть это утверждение и помочь создать такие заголовки

> Т.к. при указании Expires nginx
> автоматически правит и
> CacheControl
> тоже:
> http://wiki.nginx.org/NginxHttpHeadersModule

Да, все правильно, именно поэтому и появилось тут это письмо. И именно это в нем и написано:

> > В конфиге написал:
> > location /abc {
> >   ...
> >   expires 0;
> >   add_header Cache-Control "no-store";
> >   ...
> > }

> > А в nginx вижу только add_header
> без возможности указать
> нужна ли мне полная
> > замена заголовка или мне
> надо дополнить имеющийся
> заголовок.
> >
> > Подскажите плиз, как
> настроить nginx/0.7.65, чтобы он
> выдавал одновременно и
> > Expires и _дополнительные_
> значения для Cache-Control?

При этом не надо предлагать очередной ответ НЕ НА МОЙ вопрос типа
expires off
add_header Expires "литерально написанное время в 1970м году"
add_header Cache-Control "no-store; max-age=0";

Так как это ответ на частный случай. И он не отвечает на другие вопросы. Например, как создать такие заголовки:
Expires: "время создания файла + 30дней";
Cache-Control: max-age="текущее время минус время создания файла + 30дней", no-store, private

Таким образом мне надо одновременно и модуль Expires и управление директивой Cache-Control.
Это желание полностью соответсвует rfc2616.

Владимир

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,83819,83947#msg-83947




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