ПРОЕКТЫ 


  АРХИВ 


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]

Проблемы с кэшированием 404 ответа с пустым телом


  • To: nginx-ru@xxxxxxxxx
  • Subject: Проблемы с кэшированием 404 ответа с пустым телом
  • From: Nickolay Krylov <nk@xxxxxxxxxxxxxx>
  • Date: Wed, 9 Dec 2009 03:38:49 +0300

Здравствуйте, Nginx-ru.

Сегодня построил схему в которой появилась проблема.

Идея такая: для каждого поддомена создается sitemap.xml средствами php
и кэшируется с помощью proxy_cache.

В некоторых поддоменах индексировать нечего, поэтому выдаем 404,
которые тоже кэшируются.

Кусок конфига
http {
    proxy_cache_path /js/jA/web/sitemaps levels=1:2 keys_zone=sitemaps:32m 
inactive=3600 max_size=10g;
...
    server { 
      listen xx.yy.zz.bb;
      name domain.ru *.domain.ru;
...
                location = /sitemap.php { rewrite ^.*$ / redirect; }
                location = /sitemap.xml {
                    proxy_temp_path /js/jA/web/tmp 1 2;

                    error_log /js/jB/tmp/sitemaps.log debug;

                    proxy_cache sitemaps;
                    proxy_cache_valid 200 301 302 404 403 10m;
                    proxy_cache_key "$host";

                    proxy_pass http://RRBE;
                    proxy_redirect off;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-BSNETMARK $bs_netmark;

                    expires 10m;
                    add_header Pragma public;

                    rewrite ^/sitemap.xml /sitemap.php break;

                }
    }
}

Проблема появляется при кэшировании пустого 404 ответа.
Первый запрос - не из кэша - проходит нормально.
Второй - кэшированный - "виснет".

jd# telnet domain.ru 80
Trying xx.yy.zz.bb...
Connected to domain.ru.
Escape character is '^]'.
GET /sitemap.xml HTTP/1.1
Host: veo.domain.ru

HTTP/1.1 404 Page Not Found
Server: nginx
Date: Wed, 09 Dec 2009 00:28:12 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive

0

GET /sitemap.xml HTTP/1.1
Host: veo.domain.ru
- здесь висим минуту

Connection closed by foreign host.



Если в ответе есть тело, проблема не проявляется.

nginx -V
nginx version: nginx/0.8.20
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I 
/usr/local/include' --with-ld-opt='-L /usr/local/lib'
--conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx 
--pid-path=/var/run/nginx.pid
--error-log-path=/var/log/nginx-error.log --user=www --group=www --with-debug 
--with-file-aio
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp 
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp 
--http-log-path=/var/log/nginx-access.log
--with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module 
--with-http_perl_module
--with-http_random_index_module --with-http_realip_module 
--with-http_stub_status_module --with-pcre

Отладочные логи приготовил.

-- 
С уважением,
 Nickolay Krylov                          mailto:nk@xxxxxxxxxxxxxx


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.