生成认证文件
方法1
安装工具
# debian
sudo apt install apache2-utils
# redhat
sudo yum install -y httpd-tools
创建认证文件,-c是创建新的文件
sudo htpasswd -c ./htpasswd user1
# 按提示输入user1的密码
# 也可以直接在命令中输入密码,加上-b参数
sudo htpasswd -cb ./htpasswd user1 password
# 添加额外的用户
sudo htpasswd -c ./htpasswd user2
htpasswd文件示例内容如下
$ cat htpasswd
user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
方法2
openssl passwd -apr1 password
创建htpasswd文件,将上述密码加入到 htpasswd,格式如下,其中 user1
是用户名
# 允许使用#来注释
user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0:允许在第二个冒号之后加注释
配置 nginx
单路径匹配
location /api {
# 显示给用户的提示,有空格等符号时必须使用单/双引号
auth_basic secure;
# 加密文件
auth_basic_user_file /etc/nginx/htpasswd;
}
整个服务生效
server {
...
auth_basic secure;
auth_basic_user_file /etc/nginx/htpasswd;
location /public/ {
auth_basic off;
}
}