Nginx配置Basic Authentication认证

生成认证文件

方法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;
  }
}