Задать вопрос

Nginx: Last-Modified в будущем

Сейчас на моих часах 23:50 по Москве, 12 октября. Примерно час назад (в 22:58 по Москве или 18:58 GMT) я выложил обновленную версию сайта на продакшн. При запросе статического файла с расширением css с сервера от Nginx приходят следующие заголовки:

HTTP/1.1 200 OK
Server: nginx/1.4.2
Date: Sat, 12 Oct 2013 18:58:05 GMT
Content-Type: application/x-javascript
Content-Length: 131157
Last-Modified: Sat, 12 Oct 2013 22:09:50 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5259c8ae-20055"
Expires: Sat, 12 Oct 2013 19:28:05 GMT
Cache-Control: max-age=1800
Accept-Ranges: bytes


На сервер стоит кеширование с expires 30m, что видно по разнице Date и Expires. При это дата последнего изменения файла показывается 22:09 GMT, но это дата в будущем (2 часа ночи 13 октября по Москве)!!! На самом деле файл был изменен в 22:09 по Москве и затем загружен на сервер. При этом утилита stat для файла выдает правильную дату:
Access: 2013-10-12 14:13:26.000000000 -0400
Modify: 2013-10-12 18:09:54.000000000 -0400
Change: 2013-10-12 14:13:26.000000000 -0400

Видимо в связи с неправильной датой заголовок Expires продолжает постоянно обновляться, следуя за Date. Вопрос — как исправить подобное поведение?

Настройки nginx:
        location ~* \.(jpg|png|gif|jpeg|css|js|doc|pdf|xls|docx|xlsx|odt|odc|ico)$ {
                root   /var/lib/tomcat7/webapps/ROOT;
                proxy_buffering           on;
                proxy_buffers 8 8k;
                proxy_cache static;
                proxy_cache_min_uses 1;
                proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504 updating;
                proxy_cache_valid 200 301 302 304 30m;
                expires 30m;
        }


Обновление от 13.10.2013 10:50: дата, указанная в Last-Modified была достигнута сервером, но Expires все равно продолжает показываться относительно Date, а не относительно Last-Modified. Т.е. если я ставлю expires 30m; — то каждый раз выдается заголовок: Expires: Date + 30m;
  • Вопрос задан
  • 4782 просмотра
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
vaniaPooh
@vaniaPooh Автор вопроса
Проблема с Expires был решена отключением всех директив proxy и выставлением expires: modified +30m;
Ответ написан
Комментировать
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
а на вебсервере(ах) с датами и часовыми поясами все в порядке?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы