在 Nginx 中可以使用 HTTP 基础身份认证协议(HTTP Basic Authentication)验证用户名和密码来限制对资源的访问;

效果如下所示:

HTTP基础身份认证
要求验证用户名与密码

当取消验证时会提示401 Authorization Required

HTTP基础身份认证
Authorization Required

配置示例

# 为 /admin 页面开启认证
location /admin {
    auth_basic "Admin Area";
    auth_basic_user_file auth.txt;
}

其中auth.txt为用户密码文件,例:

# 此为示例,不要实际中使用明文
admin:password

重启 Nginx 生效,再访问/admin页面时需要提供用户名和密码进行身份验证;

配置指令

可在httpserverlocation块中使用;

语法: auth_basic string | off;
默认: auth_basic off;

auth_basic用于开启 HTTP 基础身份认证,string为提示字符串,在某些客户端下,提示字符串可能不会显示;

语法: auth_basic_user_file file;
默认: 未设置

auth_basic_user_file用于指定存储用户名和密码的文件路径;

密码文件格式如下:

# 注释
user1:password1
user2:password2:注释

每行一个用户,冒号分隔用户名和密码,密码可以加密,也可以是明文(强烈不推荐使用);推荐使用 Apache MD5 密码算法变体(apr1)对密码进行哈希处理:

openssl passwd -apr1 "password"
$apr1$92M7XnJc$QftLoP0/mWVZiATRvNu2.1

将结果添加到密码文件中:

user1:$apr1$92M7XnJc$QftLoP0/mWVZiATRvNu2.1