Странное поведение proxy_cache_bypass

Oleksandr V. Typlyns'kyi wangsamp на gmail.com
Вт Сен 28 22:12:15 MSD 2010


Использую кеширование в nginx 0.8.50 перед apache.
В проксируемом location следующее:
 proxy_pass http://apache;
 proxy_cache CACHE;
 proxy_cache_key $host$uri$is_args$args$cookie_lang;
 proxy_cache_min_uses 1;
 proxy_cache_valid 200 301 1m;
 proxy_cache_valid 404 30s;
 proxy_cache_use_stale updating error timeout invalid_header http_500 http_502 http_503 http_504;
 proxy_no_cache $arg_WPMODE;
 proxy_cache_bypass $arg_WPMODE $http_pragma;
 proxy_ignore_headers Set-Cookie;
 proxy_hide_header Set-Cookie;
 proxy_pass_header Cookie;
 proxy_set_header Accept-Encoding "";
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_hide_header Vary;
 gzip on;

В proxy_no_cache $http_pragma не указан для обновления кеша.

Делаю первый запрос:
wget -d http://domain.tld/someurl

---request begin---
GET /someurl HTTP/1.0
User-Agent: Wget/1.12
Accept: */*
Host: domain.tld
Connection: Keep-Alive

---response begin---
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 28 Sep 2010 17:34:17 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
Vary: Accept-Encoding

Абсолютно корректно отвечает и сохраняет:

KEY: domain.tld/someurl
HTTP/1.1 200 OK
Date: Tue, 28 Sep 2010 17:34:17 GMT
Server: Apache/2
X-Accel-Expires: 300
Set-Cookie: lang=ru; expires=Sat, 27-Nov-2010 17:34:17 GMT; path=/; domain=domain.tld
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=windows-1251


Посылаю запрос для обновления:
wget -d --header "Pragma: no-cache" http://domain.tld/someurl

---request begin---
GET /someurl HTTP/1.0
User-Agent: Wget/1.12
Accept: */*
Host: domain.tld
Connection: Keep-Alive
Pragma: no-cache

---response begin---
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 28 Sep 2010 17:35:57 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
Vary: Accept-Encoding


Сам ответ правильный, а вот в файле кеша - "битый" заголовок:

KEY: domain.tld/someurl
Server: Apache/2
X-Accel-Expires: 300
Set-Cookie: lang=ru; expires=Sat, 27-Nov-2010 17:35:57 GMT; path=/; domain=domain.tld
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=windows-1251


Последующие запросы к кешу:
wget -d http://domain.tld/someurl

---request begin---
GET /someurl HTTP/1.0
User-Agent: Wget/1.12
Accept: */*
Host: domain.tld
Connection: Keep-Alive

---response begin---
---response end---
200 Заголовки отсутствуют, подразумевается HTTP/0.9
Длина: нет информации

Помогите понять это я нечто делаю не так или сохранение в кеш при proxy_cache_bypass?

-- 
WNGS-RIPE



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