Странности с auth_basic и реврайтом

Александр Сытар sytar.alex на gmail.com
Пн Ноя 30 23:39:45 MSK 2009


Мог бы кто-нибудь объяснить странность поведения следующей конфигурации
(0.7.64):

location = / {
 rewrite ^ /index.php$uri last;
}

location /admin {
 auth_basic "Resticted Area";
 auth_basic_user_file .htpasswd;
 root /path/to/site/root;
*  rewrite ^ /index.php$uri last #  <- epic fail, входим без пароля*
**}

location / {
 try_files $uri /index.php$uri;
}

/location ~* \.php$ {
 fastcgi_pass backend;
}

debug log:
*
009/11/30 23:17:57 [notice] 13487#0: *25 "^" matches "/admin", client:
89.178.81.78, server: examle.ru, request: "GET /admin HTTP/1.1", host: "
www.example.ru"
2009/11/30 23:17:57 [notice] 13487#0: *25 rewritten data:
"/index.php/admin", args: "", client: 89.178.81.78, server:
example
.ru, request: "GET /admin HTTP/1.1", host: "www.
example
.ru"
*

Однако если сделать так, то всё работает как и задумывалось.

location /admin {
 auth_basic "Resticted Area";
 auth_basic_user_file .htpasswd;
 root /path/to/site/root;
* try_files $uri /index.php$uri; # <- работает как и должно, запрос пароля.
*}

debug log:

[notice] 15504#0: *148 "^/(.*)$" matches "/admin", client: 89.178.81.78,
server: *
example
*.ru, request: "GET /admin HTTP/1.1", host: "*
example
*.ru"
2009/11/30 23:36:57 [notice] 15504#0: *148 rewritten redirect: "http://www.*
example
*.ru/admin", client: 89.178.81.78, server: 3321045.ru, request: "GET /admin
HTTP/1.1", host: "*
example
*.ru"

Как же надо по правильному это сделать?
*
-- 
*

Sent from Moscow, Mow, Russia
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091130/bce1d490/attachment.html>


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