auth_basic是 Nginx 原生模块,可以直接负责认证。
最简单的配置
location ^~ /private/ {
auth_basic "Private";
auth_basic_user_file /etc/nginx/.htpasswd;
}
其中:
auth_basic
是 Nginx 自带的 HTTP Basic Authentication 模块。
但:
auth_basic_user_file /etc/nginx/.htpasswd;
这个文件必须提前存在,里面保存的是用户名和经过哈希处理的密码。
如果你不想安装 apache2-utils
可以手动生成密码。
例如使用 OpenSSL:
openssl passwd -apr1
输入密码后会得到类似:
$apr1$xxxxxxxx$xxxxxxxxxxxxxxxxxxxxxx
然后:
vim /etc/nginx/.htpasswd
写入:
admin:$apr1$xxxxxxxx$xxxxxxxxxxxxxxxxxxxxxx
保存后:
chmod 640 /etc/nginx/.htpasswd
chown root:www-data /etc/nginx/.htpasswd
Nginx:
location ^~ /private/ {
auth_basic "Private Directory";
auth_basic_user_file /etc/nginx/.htpasswd;
}
最后:
nginx -t
systemctl reload nginx
需要注意
Basic Auth 本身不是“加密传输”。用户名和密码通过 HTTP Authorization 头传输,只有配合 HTTPS 才适合用于实际网站。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
