在 nginx 中对单个文件 + FastCGI 和 basic_auth 进行无限制访问,适用于整个域

在 nginx 中对单个文件 + FastCGI 和 basic_auth 进行无限制访问,适用于整个域

限制对除一个文件之外的所有文件的访问的最简单方法是什么,其中整个域通过 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...
   }
}

答案1

您可以使用 关闭某个位置的身份验证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...
   }
}

“循环”源自于 auth/dir被指定了两次(//dir)。为了放大这一点,尝试将文本更改为"Restricted path /""Restricted path /dir",您的循环应该会交替显示这两条消息。

相关内容