Re: Странности с auth_basic и реврайтом
Maxim Dounin
mdounin на mdounin.ru
Вт Дек 1 00:33:15 MSK 2009
Hello!
On Mon, Nov 30, 2009 at 11:39:45PM +0300, Александр Сытар wrote:
> Мог бы кто-нибудь объяснить странность поведения следующей конфигурации
> (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, входим без пароля*
rewrite срабатывает до проверок авторизации
[...]
> Однако если сделать так, то всё работает как и задумывалось.
>
> location /admin {
> auth_basic "Resticted Area";
> auth_basic_user_file .htpasswd;
> root /path/to/site/root;
> * try_files $uri /index.php$uri; # <- работает как и должно, запрос пароля.
try_files срабатывает после проверок авторизации
При этом надо не забыть /index.php/admin... убрать в internal
location и убедиться что какой-либо другой внетренний редирект
туда привести не может. А лучше - тоже закрыть авторизацией. В
противном случае прямой запрос к /index.php/admin даст
пользователю доступ, который вы так хотели закрыть.
[...]
> Как же надо по правильному это сделать?
По правильному - запрос авторизации должен случаться там же, где и
обработка запроса.
location /admin {
auth_basic ...
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $uri;
...
}
Maxim Dounin
p.s. Не следует использовать html при отправке писем в рассылку.
Спасибо.
Подробная информация о списке рассылки nginx-ru