Nginx 基本身份验证密码不起作用

Nginx 基本身份验证密码不起作用

我正在尝试使用 nginx 在子文件夹上设置基本身份验证。

location ^~ /Docs/ {
   auth_basic            "Restricted Area";
   auth_basic_user_file  /var/www/Docs/.htpasswd; //also tried the path in quotes
}

我尝试过多种方法来生成密码(例如 apache 的htpasswd),但我无法使用 .htpasswd 中指定的用户名和密码登录 /Docs。我看到带有“限制区域”的身份验证对话框,但密码不被接受。

我已经尝试过这些方法这里

答案1

事实证明,这是由 Squid 缓存代理未正确传递身份验证标头引起的。通过运行类似以下内容可以证明这一点:

curl -i --user qqq:qqq http://target.server/Docs/dump.php |grep AUTH 

dump.php 包含<php phpinfo();

对于 squid 后面的服务器,该命令的输出为空,我希望看到_SERVER["HTTP_AUTHORIZATION"]

答案2

您是否尝试过使用绝对位置路径?

location /Docs { auth_basic "Restricted Area"; auth_basic_user_file /var/www/Docs/.htpasswd; }

如果这能让你进一步了解,你可能需要(A)将密码文件移到 Web 根目录之外,或者(B)保护密码文件不被提供:

location ~ /\. { deny all; }

您是否确定所创建的文件可被 nginx 所运行的用户读取?

相关内容