ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Не работает proxy_cache_use_stale ?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Не работает proxy_cache_use_stale ?
  • From: Flam Boyant <flamboyant2@xxxxxxxxx>
  • Date: Tue, 5 May 2009 18:41:24 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=+38KnhoDBZyE+jYCT01nDycENwCsksY/cpdmNe3bEzM=; b=qjVhm6nx8SqqroxMGG4+Hnq4jDmE+vpe1wujxjPwe6yMGqHX4tPWp25um4zw+Z1krS PtooKjI9hwjN2tBaeu19p2EHJaV/3QQSxt8x6r0WdNVHX6Ih0qGiHQ4zjgl3QuBdyBkA V4e+unRRvqexgL1tGiSxj7AU21ypuJRIJ9ky4=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=mXLoubsie8/TZvxm8Z7jXEabBuA5SGXF63jtZYjxDfpjvQPNnfRlA8KZa28cElCCXW xeaJ9pwy0G1MKpo0lh4x7wjo+PQHPA3FhoXXi7bj9VjkknNMSpmGsEUOZCM0FEubEyVC zE8/TJcGuF2WjvpNkg10pEgwvX3SJWN9ZUhX0=
  • In-reply-to: <20090505145153.GU29269@xxxxxxxxxxxxx>
  • References: <e096b2f60905050708j50f23a40t77088d8e3d40c4a9@xxxxxxxxxxxxxx> <20090505145153.GU29269@xxxxxxxxxxxxx>

Применил патч.
Если запросить файл по истечении таймаута  - получаем ответ с HTTP result code 0.
Вот дамп ответа
HTTP/1.0 0 Init
Server: nginx/0.7.54
Date: Tue, 05 May 2009 15:29:27 GMT
Content-Type: text/html; charset=windows-1251
Vary: user-agent
Connection: keep-alive

Hello world! 1241537009

В логах соответсвенно -
192.168.7.6 - - [05/May/2009:18:29:27 +0300] "GET /cgi/test.cgi HTTP/1.0" "0/500" 23 "www.ххх.net" "127.0.0.1:8000/0.038"

Firefox при этом ждет файла несколько минут, потом все таки показывает результат.
Пробовал играться с таймаутами прокси - не помогает.
5 мая 2009 г. 17:51 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:
On Tue, May 05, 2009 at 05:08:51PM +0300, Flam Boyant wrote:

> Всем привет!
> Есть nginx-0.7.54 на Linux, есть желание сделать на нем "перманентный кеш" -
> то есть если бекенд недоступен, то файл отдается из кеша, даже если он
> устарел.
> Конфигурация nginx такая -
> worker_processes 4;
> worker_rlimit_nofile 10240;
> error_log logs/error.log;
> pid logs/nginx.pid;
> events {
>   worker_connections 4096;
> }
>
> http {
>   include mime.types;
>   default_type application/octet-stream;
>
>   log_format main '$remote_addr - $remote_user [$time_local] "$request" '
>   '"$status/$upstream_status" $body_bytes_sent '
>   '"$host" "$upstream_addr/$upstream_response_time"';
>
>   access_log logs/access.log main;
>
>   sendfile on;
>   tcp_nopush on;
>   tcp_nodelay on;
>   keepalive_timeout 65 20;
>
>   client_header_timeout 3m;
>   client_body_timeout 3m;
>   send_timeout 3m;
>
>   client_header_buffer_size 4k;
>   large_client_header_buffers 4 4k;
>
>   client_max_body_size 1m;
>   client_body_buffer_size 128k;
>
>   output_buffers 4 32k;
>   postpone_output 1460;
>
>   proxy_connect_timeout 10;
>   proxy_send_timeout 90;
>   proxy_read_timeout 90;
>   proxy_buffer_size 128k;
>   proxy_buffers 4 128k;
>   proxy_busy_buffers_size 128k;
>   proxy_temp_file_write_size 128k;
>
>   gzip off;
>
>   proxy_cache_key "$scheme://$host$uri$is_args$args:";
>   proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=one:10m
> inactive=20m max_size=500m;
>   proxy_cache one;
>   proxy_cache_min_uses 1;
>   proxy_cache_valid 200 302 5m;
>   proxy_cache_valid 301 1h;
>   proxy_cache_use_stale error timeout invalid_header http_500 http_502
> http_503 http_504;
>   proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Expires
> Cache-Control;
>
>   set_real_ip_from 127.0.0.1;
>   real_ip_header X-Forwarded-For;
>
>   server {
>     listen 9090;
>     server_name localhost;
>     location / {
>       proxy_pass http://localhost:8000;
>       proxy_set_header Host $host;
>       proxy_set_header X-Forwarded-For $remote_addr;
>   }
>
>     error_page 500 502 503 504 /50x.html;
>     location = /50x.html {
>      root html;
>     }
>   }
> }
>
>
> Проверяем - создаем простенький test.cgi, запрашиваем его, убежаемся что
> файл попал в кеш - тут все ок.
> Файл на диске есть -
> $ find /usr/local/nginx/cache -type f -exec grep "/cgi/test.cgi:" {} \;
> Binary file /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> matches
> $ ls -al /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> -rw------- 1 nobody nobody 322 May 5 16:43
> /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> Да и по логам видно - файл отдается из кеша.
> 192.168.7.6 - - [05/May/2009:16:43:00 +0300] "GET /cgi/test.cgi HTTP/1.0"
> "200/200" 23 "www.xxx.net" "127.0.0.1:8000/0.057"
> 192.168.7.6 - - [05/May/2009:16:46:30 +0300] "GET /cgi/test.cgi HTTP/1.0"
> "200/-" 23 "www.xxx.net" "-/-"
> Ломаем test.cgi - чтобы при запросе выдавал 500-ую ошибку.
> Пробуем еще раз - все ок - файл отдается из кеша -
> 192.168.7.6 - - [05/May/2009:16:47:31 +0300] "GET /cgi/test.cgi HTTP/1.0"
> "200/-" 23 "www.xxx.net" "-/-"
> Но у нас еще не истекло время хранения. Ждем 5 минут и пробуем еще раз -
> 192.168.7.6 - - [05/May/2009:16:50:17 +0300] "GET /cgi/test.cgi HTTP/1.0"
> "500/500" 593 "www.xxx.net" "127.0.0.1:8000/0.039"
> То есть несмотря на то что  proxy_cache_use_stale прописана обращения к кешу
> нет - идет обращение на бекенд!
> Файл в кеше еще есть -
> $ find /usr/local/nginx/cache -type f -exec grep "/cgi/test.cgi:" {} \;
> Binary file /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> matches
> $ ls -al /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> -rw------- 1 nobody nobody 322 May 5 16:43
> /usr/local/nginx/cache/e/aa/5fd721f295024d972798697193182aae
> Просьба ткнуть носом где туплю.

Патч.


--
Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.