Re: Basic auth при реврайте

Maxim Dounin mdounin at mdounin.ru
Thu Mar 28 08:43:20 UTC 2013


Hello!

On Wed, Mar 27, 2013 at 08:05:06PM -0400, zeromind wrote:

> Здраствуйте форумчане :), хочу задать вопрос, у меня есть следующие
> локейшены в конфиге:
> 
> location /admin {
>                         if (!-e $request_filename) {
>                                 rewrite ^/admin/(.*)$
> /admin/index.php?route=$1 last;
>                         }
>                         index index.php;
>                         auth_basic "Unauthorized";
>                         auth_basic_user_file
> /home/***/www/s1/admin/.htpasswd;
>                 }
> 
> location ~ \.php$ {
>                         try_files $uri = 404;
>                         fastcgi_index index.php;
>                         include fastcgi_params;
>                         fastcgi_pass unix:/var/run/php-fpm.sock;
>                 }
> 
> На php, я реализовал мод реврайт, и для этого в nginxe вбил - rewrite
> ^/admin/(.*)$ /admin/index.php?route=$1 last;
> так вот.. если мы заходим по url /admin/main/ то запросится пару раз
> авторизация.. и если НАЖАТЬ ОТМЕНА, покажится сайт (локейшен php отработает
> динамику), но без css, js, img и тд.. Я так понимаю это из-за реврайта? как
> решить данную проблему ?

У вас доступ к /admin/index.php - не закрыт авторизацией.  Решение 
проблемы - таки закрыть.

Правильный конфиг будет выглядеть как-то так:

    location /admin {
        auth_basic ...

        location ~ \.php$ {
            fastcgi_pass ...
            ...
        }
    }

    location / {
        ...

        location ~ \.php$ {
            fastcgi_pass ...
            ...
        }
    }

-- 
Maxim Dounin
http://nginx.org/en/donation.html



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