mod_proxy If-Modified-Since apache

darkbeard nginx-forum at nginx.us
Thu Nov 19 15:19:16 MSK 2009


Здравствуйте.
Может, кто подскажет, можно ли такое реализовать на Nginx?

nginx version: nginx/0.7.62 + mod_proxy

Структура:
backend (apache)____________Nginx____________________Client
10.0.0.67<---------------->10.0.0.68 192.168.0.2 <-------------> 192.168.0.5

Nginx server<------------------Client
GET /test.test

backend <------------------ Nginx server
GET /test.test

backend ------------------> Nginx server

200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:51:24 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 962
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:53:27 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:51:24 GMT
Client-Peer: 10.0.0.67:80
Client-Response-Num: 1

Nginx server------------------>Client

200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:51:24 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 958
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:53:24 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:51:24 GMT
Client-Peer: 192.168.0.2:80
Client-Response-Num: 1


Пока не превышено время Expires: Thu, 19 Nov 2009 09:38:53 GMT
nginx отдает эту станицу из кеша. По истечению, конструкция повторяется.

А можно ли сделать немного другую модель?
Первая часть та же, но, после истечения времени жизни страницы:
Не удаляя файла из кеша!

Nginx<------------------Client
GET /test.test


backend <------------------ Nginx server
GET /test.test

Посылаем тот же запрос, но с заголовком
Last-Modified=If-Modified-Since
В данном случае
If-Modified-Since: Wed, 18 Nov 2009 14:04:31 GMT

backend ------------------> Nginx server
304 Not Modified
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:53:32 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:53:32 GMT
Client-Peer: 10.0.0.67:80
Client-Response-Num: 1

Nginx server------------------>Client

200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:53:32 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 958
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:53:32 GMT
Client-Peer: 192.168.0.2:80
Client-Response-Num: 1

и в заголовке закешированного файла, надо заменить заголовок Expires:
На новый
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Что бы продолжать отдавать закешированный контент, а не генерить страницу заново.
А чистку кеша, осуществлять только по приближении к ограничению по месту, тех файлов, где давно просрочен Expires.

C Уважением, Константин.

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






More information about the nginx-ru mailing list