我尝试了很多方法,并花了很多时间。我编辑/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 程序创建密码文件。