我有一个wordpress网站。我想使某些文件仅通过用户名/密码身份验证可用。为此,我只想使用nginx身份验证。所以我做了以下步骤。
1( 为用户创建一个带有加密密码的.htpasswd
文件asdf
:sudo htpasswd -c /etc/nginx/.htpasswd asdf
然后,系统将提示我输入并重新输入密码。该文件已创建并具有以下权限:
-rw-r--r-- 1 根根 43 1月 26 13:39 .htpasswd
2(我通过添加以下块来更改nginx配置:
location /targetfolder/pdf {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
/targetfolder/pdf
是文件所在的位置,应受密码保护。
3(然后我重新启动nginx:sudo service nginx restart
。
然后,我浏览到该文件夹,并被提示输入凭据。输入正确的凭据后,我收到403禁止nginx错误消息。
错误中的错误.log说:
2020/01/26 13:45:21 [错误] 29853#0:*3 禁止"/var/www//targetfolder/pdf/"的目录索引,客户端:xx.xxx.xxx.xxx,服务器:example.com,请求:"GET/targetfolder/pdf/HTTP/1.1",主机:"example.com">
我做错了什么?我已经尝试了不同的解决方案,例如尝试不同的.htpasswd
位置,在nginx配置中设置索引文件等。会不会和wordpress有关?加密/解密输入的密码时会不会出错?
FWIW,nginx正在与root用户一起运行。 命令ps aux | grep nginx
返回。
根 29849 0.0 0.1 91836 3060 ? Ss 13:44 0:00 nginx: master process/usr/sbin/nginx -g daemon on;master_process;
可以回答我自己的问题。配置基本上是正确的,但是,错误中的以下行.log指示我的错误:
2020/01/26 14:56:13 [错误] 30373#0:*54 禁止"/targetfolder/pdf/"的目录索引,客户端:80.110.88.251,服务器:example.com,请求:"GET/pdf/HTTP/1.1",主机:"example.com">
这意味着默认的nginx似乎不允许目录列表(这是一件好事(。所以我只需要为我的目标文件夹设置自动索引,从而对站点/位置进行以下配置:
location /targetfolder/pdf {
autoindex on; #added
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}