使用Nginx自带的auth_basic模块实现加密访问目录

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
喜欢就支持一下吧
点赞7 分享