Назад | Перейти на главную страницу

Неограниченный доступ к одному файлу + FastCGI с basic_auth для всего домена в nginx

Какой самый простой способ ограничить доступ ко всем файлам, кроме одного, когда весь домен обслуживается через FastCGI?

Проблема, возникающая при использовании ниже conf, заключается в том, что я не могу получить доступ к / dir (у меня спрашивают пароль в каком-то цикле, правильный логин + пароль не позволяет мне войти).

Кроме того, такая же конфигурация fastCGI дублируется в location = /unrestricted_file.php и location ~ .php $.

Структура:

server {
    location = /unrestricted_file.php {
       # FastCGI conf...
       break;
    }

    location / {
        root 
        index

        auth_basic "Restricted";
        auth_basic_user_file file;
    }

    location /dir {
        auth_basic "Restricted";
        auth_basic_user_file file;
    }


   location ~ \.php$ {
       auth_basic "Restricted";
       auth_basic_user_file file;
       # fastcgi_pass...
   }
}

Вы можете отключить аутентификацию для местоположения с помощью auth_basic off. Это сократит ваш конфигурационный файл примерно до следующего: (непроверено)

server {
    auth_basic "Restricted";
    auth_basic_user_file file;

    location = /unrestricted_file.php {
       auth_basic off;
       # fastcgi_pass...
    }

    location / {
        root 
        index

    }

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

"Цикл" возникает из-за того, что аутентификация для /dir указывается два раза (/ и /dir). Чтобы увеличить это, попробуйте изменить текст на "Restricted path /" и "Restricted path /dir" и ваш цикл должен показывать вам чередование обоих сообщений.