Welcome! Log In Create A New Profile

Advanced

HELP! fastcgi_cache_bypass - оно вообще работает хоть у кого-нить?

Влад Максимов
February 24, 2011 07:20AM
Наткнулся на неприятное: не работает fastcgi_cache_bypass.
Или я просто не умею его готовить, что тоже возможно.

Стандартная схема frontend->backend

...
location /cached/block/ {

rewrite ^/cached(/.+)$ $1 break;

include fastcgi_params;

fastcgi_pass localhost:9005;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $backend_root_index;
fastcgi_param REQUEST_URI $uri;

fastcgi_cache testcache;
fastcgi_cache_key "$request_method|$host|$uri";
fastcgi_cache_valid 200 302 1d;

fastcgi_no_cache $arg_nocache;
fastcgi_cache_bypass $arg_nocache;

fastcgi_cache_bypass $arg_skipcache;
}
...

Если я правильно понимаю документацию, то при обращении http://mydomain.com/cached/block/someData/ - nginx обратится к бэкенду, закеширует ответ на 1 день и содержимое ответа отдаст клиенту.
При этом если я обращусь с ?skipcache ( http://mydomain.com/cached/block/someData/?skipcache=1 ) то nginx не должен искать эти данные в кеше, а должен обратиться на бэкенд за свежими данными, после чего уже положить их в кеш и отдать клиенту.

И вот тут начинается самое интересное:
1. если я обращаюсь http://mydomain.com/cached/block/someData/ - всё работает, как и предполагалось - кешируется ответ бэка, и последующим запросам клиентов отдаётся всё из кеша
2. если я обращаюсь http://mydomain.com/cached/block/someData/?skipcache=1 - всё ломается. При этом в зависимости от размера ответа бэка, этот ответ всё-таки может оказаться в кеше и попасть клиенту (но очень серьёзно побитый), или же я в логе получу строчку в духе upstream sent unsupported FastCGI protocol version: 118 while reading upstream, client: 192.168.1.5, server: some.trashcan.dev, request: "GET /cached/block/someData?skipcache=1 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9005", host: "some.trashcan.dev"
3. однако если я обращусь http://mydomain.com/cached/block/someData/?nocache=1 (то есть пробрасывать на бэк и при этом не сохранять в кеш) - тоже всё будет работать.

Что делать? Куда копать?
Что я пропустил или не понял?

--------------------
nginx -V

nginx version: nginx/0.8.54
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
configure arguments: --with-http_image_filter_module --with-http_stub_status_module --with-http_realip_module --with-debug

nginx: nginx version: nginx/0.9.5
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
nginx: configure arguments: --with-http_image_filter_module --with-http_stub_status_module --with-http_realip_module --with-debug



_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

HELP! fastcgi_cache_bypass - оно вообще работает хоть у кого-нить?

Влад Максимов February 24, 2011 07:20AM

Re: HELP! fastcgi_cache_bypass - оно вообще работает хоть у кого-нить?

Maxim Dounin February 24, 2011 08:10AM

Re[2]: HELP! fastcgi_cache_bypass - оно вообще работает хоть у кого-нить?

Влад Максимов February 24, 2011 08:32AM

Re: HELP! fastcgi_cache_bypass - оно вообще работает хоть у кого-нить?

Alex Vorona May 28, 2011 07:48AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 276
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready