Re: пропуски fastcgi no cache

Maxim Dounin mdounin на mdounin.ru
Ср Окт 6 18:28:47 MSD 2010


Hello!

On Wed, Oct 06, 2010 at 09:51:21AM -0400, n-sw-bit wrote:

> при установке параметров
> 
> fastcgi_cache_min_uses 3;
> fastcgi_no_cache         $cookie_nocache1
> fastcgi_no_cache         $cookie_nocache2
> fastcgi_cache_bypass  $cookie_nocache1
> fastcgi_cache_bypass  $cookie_nocache2
> 
> 
> когда истекает срок жизни кеша ответ
> при наличии указанных кук иногда всё
> равно попадает в кеш.
> Понял я это, включив отладку в логе
> 
> log_format cachetest
> '$time_local|$remote_addr|$request_time|$cookie_nocache1|$cookie_nocache2|$upstream_cache_status|$status|$request';
> 
> 
> И периодически в логе возникают
> строчки вроде
> 
> 06/Oct/2010:17:13:08
> +0400|213.247.165.140|0.500|-|04e097c6502c21124ee8fbdde71ab853|MISS|200|GET / HTTP/1.1
> 
> 
> Т.е. в кеш главной страницы попал ответ,
> отданный зарегистрированному
> пользователю, что подтверждает
> браузер, показывая всем hello, username!
> 
> Кто-нибудь сталкивался с этим? Это глюк
> нового параметра или что-то пропущено в
> настройках?

Патч.

Maxim Dounin
-------------- next part --------------
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1286375230 -14400
# Node ID 94b30aa5d8497cc409579f3253dfa3522c55a28b
# Parent  b2afd36d87f46247bdbe924e232a8fd7b95a6529
Fix predicate testing (*_cache_bypass, *_no_cache).

Values starting with '0' was incorrectly assumed to be false.

diff --git a/src/http/ngx_http_script.c b/src/http/ngx_http_script.c
--- a/src/http/ngx_http_script.c
+++ b/src/http/ngx_http_script.c
@@ -265,7 +265,7 @@ ngx_http_test_predicates(ngx_http_reques
             return NGX_ERROR;
         }
 
-        if (val.len && val.data[0] != '0') {
+        if (val.len && (val.len != 1 || val.data[0] != '0')) {
             return NGX_DECLINED;
         }
     }


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