отключение auth_basic для одного контроллера в cakephp, обслуживаемого nginx (расположение и перезапись) - PullRequest
0 голосов
/ 23 ноября 2010

Я хочу иметь неограниченный доступ к одному из моих контроллеров в CakePHP.Ниже приведена конфигурация, которую я использую, к сожалению, при попытке myhost.com/my_controller/my_action все еще требуются учетные данные.Не должен / my_controller / my_action соответствовать location ^ ~ / my_controller / my_action вместо location ~ .php $ ?

Из того, что я понимаю из здесь это должно быть.

Я пытался включить вышеуказанный трюк с if ($ request_uri ~ * / phpmyadmin) , но я полагаю, auth_basic не разрешен в IF, перезапуская nginx: [emerg]: директива «auth_basic» здесь недопустима).

Я также пытался сопоставить переписанное местоположение, т.е. location /index.php?q=/my_controller/my_action {, но безУспех.

Точный оператор "=" тоже не работает, думаю, из-за переписывания.То же самое с "~".

В идеале решение должно быть достаточно универсальным, чтобы использовать его и с другими контроллерами.

server {
    root
    index

    rewrite ^(.+)$ /index.php?q=$1 last;

    location ^~ /my_controller/my_action {
        auth_basic off;
        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }

    location ~ \.php$ {
        auth_basic "Restricted";
        auth_basic_user_file

        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }
}

1 Ответ

1 голос
/ 23 ноября 2010

Помещая auth_basic в папку * .php, вы говорите, что ограничиваете доступ к файлам, сгенерированным php. Если вы получите доступ к файлу, сгенерированному php внутри вашего контроллера, он победит.

Лучшее решение для этого случая - просто поставить auth_basic вне location.

РЕДАКТИРОВАТЬ 1: НЕ РАБОТАЕТ

server {
    root
    index

    auth_basic "Restricted";
    auth_basic_user_file

    rewrite ^(.+)$ /index.php?q=$1 last;

    location ^~ /my_controller/my_action {
        auth_basic off;
        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }

    location ~ \.php$ {
        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }
}

РЕДАКТИРОВАТЬ 1: полная перезапись

server {
    root
    index

    auth_basic_user_file

    rewrite ^(.+)$ /index.php?q=$1 last;

    location / {
        auth_basic "Restricted";
    }

    location ^~ /my_controller/my_action {
        auth_basic off;
        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }

    location ~ \.php$ {
        fastcgi_pass
        fastcgi_index
        fastcgi_param
        include
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...