从诸如此类教程中可以看出,设置.htpasswd身份验证相对容易。
以下是我的HTTPS块,用于访问我的网站:
server {
listen 443;
server_name potato;
root /var/www/html;
ssl on;
ssl_certificate /srv/ssl/cert.pem;
ssl_certificate_key /srv/ssl/key.pem;
location / {
auth_basic "Restricted Content";
auth_basic_user_file /usr/local/nginx/.htpasswd;
}
}
我从这里收集了以下的代码片段,用于创建.htpasswd文件:
USERNAME=admin
PASSWORD=password
sudo printf "$USERNAME:$(openssl passwd -crypt $PASSWORD)\n" >> .htpasswd
这最初失败,出现了权限拒绝的错误。我通过首先创建一个空的.htpasswd文件,然后通过
sudo chown max:max .htpasswd
授予自己权限来解决这个问题。当我访问网站时,我确实看到了认证提示,但是即使我输入正确的密码,仍会出现403错误。
我一直在尝试调整设置,并持续通过谷歌搜索进行挖掘。但我会感激任何有关可能源的技巧。如果有人能向我展示一种可靠的方法来诊断认证失败的原因,那就太好了。
在我的access.log文件中,我有如下条目:
73.170.238.232 - admin [05/Sep/2016:12:03:34 -0700] "GET /musicker/dist/ HTTP/1.1" 403 571 "-" "Mozilla/5.0 (X11; CrOS x86_64 8350.68.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
但我在这里看不到太多有用的信息。你可以看到,我正在尝试访问网站
/musicker/dist/
,在Nginx中我的location /
块正在捕获它并添加auth_basic。