Здравствуйте, 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@antenne.org.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru