如何锁定安装了 ngix 的 Debian 服务器中的目录?

如何锁定安装了 ngix 的 Debian 服务器中的目录?

我尝试了很多方法,并花了很多时间。我编辑/etc/nginx/nginx.conf并写下了这些内容。

location /home/user/domains/example.com/public_html/lockfolder/ {
  auth_basic "Restricted";
  auth_basic_user_file /home/user/domains/example.com/.htpasswd;
}

然后我使用crypt(3)命令加密来生成密码。然后我按照中mkpasswd给出的步骤进行操作。user:encryptedpasswd.htpasswd

但事情并没有像说的那样顺利。如果有人知道我该如何配置才能达到我的目的,请告诉我!我还用以下方法重新加载了我的 nginx/etc/init.d/nginx reload

答案1

location /home/user/domains/example.com/public_html/lockfolder/行是错误的,因为它使用文件系统路径,而location使用 URI 则有效。正确的配置应如下所示

location /lockfolder/ {
    auth_basic "Restricted";
    auth_basic_user_file /path/to/htpassd;
}

预计将限制对 的请求http://www.example.com/lockfolder/something

另一个可能的陷阱是其他位置,特别是更具体的位置和/或由正则表达式给出的位置。您必须确保您写的位置确实与您希望它匹配的请求相匹配。请参阅http://nginx.org/r/location有关位置匹配详细信息的文档。

答案2

尝试这个:

location /lockfolder {
  auth_basic            "Restricted";
  auth_basic_user_file  htpasswd;
}

从 0.6.7 版本开始,auth_basic_user_file 路径与 nginx 配置文件 nginx.conf 的目录相关。如果安装了 Apache,您可以使用其中的 htpasswd 程序创建密码文件。

HttpAuthBasicModule 文档

相关内容