Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
rewrite ? ????? location ??? x-accel-redirect
доброго времени суток, господа!
1. конфигурация:
server {
listen 80;
server_name localhost h_client.ru www.h_client.ru;
root /usr/local/www/h_client/htdocs;
location /hiddenfiles {
root /usr/local/www/h_client/;
access_log /var/log/nginx/hidden_access.log main;
error_log /var/log/nginx/hidden_error.log debug;
internal;
}
if (!-e $request_filename) {
rewrite ^/(udata|upage|uobject|ufs|usel):(\/\/)?(.*)?
/releaseStreams.php?scheme=$1&path=$3 break;
rewrite ^/robots\.txt /sbots.php break;
rewrite ^/.* /index.php?path=$fastcgi_script_name
break;
}
location / {
root /usr/local/www/h_client/htdocs;
index index.php;
}
location ~* ^.+\.(php)$ {
root /usr/local/www/h_client/htdocs;
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
( и так далее про fastcgi ).
2. есть скрипт x.php, выдающий X-Accel-Redirect на /hiddenfiles/1.htm
3. редирект выдается. но вопреки ожиданию, дальше этот редирект ловится
rewrite, и переписывается в
/index.php?path=$fastcgi_script_name break;
вопрос -- почему мы не оказываемся в location /hiddenfiles?
я пробовал убирать rewrite, и все работает как надо. но у клиента там
umi.cms, ему эти рерайты нужны...
перенос rewrite в location'ы вызывает отвал работоспособности собственно
cms. тоже непонятно, почему.
лог показывает, что мы честно делаем все эти rewrite.
2008/02/12 01:51:08 [notice] 9780#0: *8103
"^/(udata|upage|uobject|ufs|usel):(\/\/)?(.*)?" does not match
"/hiddenfiles/1.xxx", client: 81.3.170.19, server: localhost, URL:
"/x.php", upstream: "fastcgi://127.0.0.1:8888", host: "www.h_client.ru"
2008/02/12 01:51:08 [notice] 9780#0: *8103 "^/robots\.txt" does not match
"/hiddenfiles/1.xxx", client: 81.3.170.19, server: localhost, URL:
"/x.php", upstream: "fastcgi://127.0.0.1:8888", host: "www.h_client.ru"
2008/02/12 01:51:08 [notice] 9780#0: *8103 "^/.*" matches
"/hiddenfiles/1.xxx", client: 81.3.170.19, server: localhost, URL:
"/x.php", upstream: "fastcgi://127.0.0.1:8888", host: "www.h_client.ru"
2008/02/12 01:51:08 [notice] 9780#0: *8103 rewritten data: "/index.php",
args: "path=/hiddenfiles/1.xxx", client: 81.3.170.19, server: localhost,
URL: "/x.php", upstream: "fastcgi://127.0.0.1:8888", host:
"www.h_client.ru"
я нашел некое решение, поставив перед вышеприведенным if такое:
if ( $request_filename ~ \/hiddenfiles\/ ) {
break;
}
но это мне кажется неправильным -- мы каждый запрос будем проверять по
regexp, трата процессора.
посоветуйте, пожалйста, что-нибудь экономное для ресурсов сервера.
С уважением.
Leonid Ryzhik
|