рекурсивное исполнение ssi.

Богун Дмитрий vugluskr на vugluskr.org.ua
Вт Авг 17 21:40:00 MSD 2010


Здравствуйте.

Есть некий сайт, хочется настроить для него кеширование, но там есть некоторые 
блоки которые должны "вызываться" при каждом запросе.

По идее proxy_cache + ssi должно дать желаемый результат. Но в процессе 
настройки столкнулся со странным поведением nginx'а, которое не могу понять. 

Тех детали.
# nginx -V
nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments: --prefix=/usr --with-cc-opt=-I//usr/include --with-ld-
opt=-L//usr/lib --conf-path=/etc/nginx/nginx.conf --http-log-
path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --
pid-path=/var/run/nginx.pid --http-client-body-temp-path=/var/tmp/nginx/client 
--http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-
path=/var/tmp/nginx/fastcgi --with-http_realip_module --with-debug --with-
http_ssl_module --with-http_stub_status_module --without-mail_imap_module --
without-mail_pop3_module --without-mail_smtp_module

В аттаче конфиг вхоста, дебаг лог запроса и 2 php скрипта которые должны были 
создать ответ. Вернее не весь лог, а его начало. Когда был включен дебаг, 
запрос начал выполнятся и "залип", через несколько секунд я прибил wget, 
потому как лог рос с очень угрожающей скоростью. Дебаг был включен только на 
мой ip, поэтому там должен быть только один этот запрос.

Уже с выключенным дебагом тот же запрос завершился весьма быстро, его ответ 
так же в аттаче. То что попало в лог, при обработке этого запроса.

2010/08/17 20:15:22 [crit] 20456#0: *171052 open() 
"/var/cache/nginx/2.somedom.net/e5d6be5a2861d96c53474f29d6a2d496" failed (24: 
Too many open files), client: 188.163.41.29, server: 2.somedom.net, request: 
"GET /test3.php HTTP/1.0", subrequest: "/test2.php", host: "2.somedom.net"

Aug 17 18:46:46 somedom grsec: From 188.163.41.29: denied resource overstep by 
requesting 4096 for RLIMIT_NOFILE against limit 4096 for 
/usr/sbin/nginx[nginx:17500] uid/euid:104/104 gid/egid:1011/1011, parent 
/usr/sbin/nginx[nginx:17498] uid/euid:0/0 gid/egid:0/0

В обычной жизни оно и 2048 дескрипторов не переедает.

Наставьте пожалуйста на путь истинный, моя это бага или nginx'a? Даже если 
моя, nginx ведет себя весьма не хорошо.

Причем для менее тестового запроса этот конфиг отрабатывает правильно, что 
смущает еще больше.
-------------- next part --------------
proxy_cache_path /var/cache/nginx/2.somedom.tld levels= keys_zone=cache_somedom_2:32m;

server {
    listen	aaa.bbb.cc.dd;

    server_name	2.somedom.tld;

    access_log	/var/log/nginx/2.somedom-access.log generic;
    error_log	/var/log/nginx/2.somedom-error.log info;
    
    root	/srv/$host/www/htdocs;
    expires	4h;

    error_page 402 = @direct_access;

    location / {
    	ssi on;
	if ($cookie_PHPSESSID) {
	    return 402;
        }

	proxy_pass       http://upstr_self;

	proxy_set_header If-Modified-Since "";
	proxy_set_header If-None-Match    "";

	proxy_set_header Host             $host;
	proxy_set_header Cookie		  "";
	proxy_set_header X-Real-IP        $remote_addr;
	proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;

	proxy_cache cache_somedom_2;
	proxy_cache_valid 200 301 302 304 2m;
	proxy_cache_use_stale updating error;
	proxy_cache_key "$host$request_uri?$args";

	proxy_hide_header "Set-Cookie";
	proxy_ignore_headers "Cache-Control" "Expires";
	proxy_ignore_client_abort on;
    }
    location ~ /giga/(login|registration) {
        return 402;
    }
    location /ssi/ {
    	proxy_pass	 http://upstr_self/;

	proxy_set_header Host		  $host;
	proxy_set_header X-Real-IP	  $remote_addr;
	proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    location @direct_access {
    	ssi on;
	proxy_pass       http://upstr_self;

	proxy_set_header Host             $host;
	proxy_set_header X-Real-IP        $remote_addr;
	proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location /upload/ { }
    location /templates/default/js/ { }
    location /templates/default/css/ { }
    location /templates/default/images/ { }
    location = /blank.gif { }
    location = /favicon.ico { }
    #location = /upload/banners/def_top.swf { return 403; }
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ssi-recursive-100M.log.bz2
Type: application/x-bzip
Size: 1572533 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100817/d8fbe48e/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test3.php
Type: application/x-php
Size: 393 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100817/d8fbe48e/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test2.php
Type: application/x-php
Size: 53 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100817/d8fbe48e/attachment-0005.bin>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100817/d8fbe48e/attachment-0001.html>


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