Nginx 配置 HTTP Basic Auth

Nginx 是一个被广泛使用的 Web 服务器,代理服务器。本文主要介绍如何为 Nginx 配置 HTTP Basic Auth。(演示环境为 macOS)

Basic Auth 是一个非常简单的认证方式,在请求的 Header 中会包含Authorization字段,形式如下: Authorization: Basic <凭证>,该凭证是用户和密码的组和的 base64 编码。

准备环境

在开始之前需要准备好环境,如果在直接在本机安装,可能会与已有的服务冲突,为了方便起见,在 docker 中运行 nginx来进行实验。

1
$ docker pull nginx:latest

配置 HTTP Basic Auth 证书

在这一步我们将会为站点创建用户名密码。

存储用户名密码的文件会由我们指定好,直接在当前目录下创建 test.htpasswd文件,并且将用户名设置为 nginx

运行下面的命令,来配置密码

1
$ htpasswd -c test.htpasswd nginx

完成后,可以查看文件的内容来确定配置成功

1
2
$ cat test.htpasswd
nginx:$apr1$9Pn6zJkQ$PcOGDRG/i.mpLn8jCEYui.

配置 nginx

完成用户名密码的配置后,需要对 nginx 的配置文件进行修改,在当前目录创建一个 default.conf 配置文件,并在之后挂载到容器内。

拷贝一份配置文件

1
2
3
$ docker run --rm -d --name nginx nginx
$ docker cp nginx:/etc/nginx/conf.d/default.conf .
$ docker stop nginx

使用编辑器修改配置文件,添加 auth_basic

1
2
3
4
5
6
7
8
9
10
11
...
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
auth_basic "Private Property";
# 指定配置文件
auth_basic_user_file /etc/nginx/.htpasswd;
}
...

测试配置

启动容器,并测试我们的配置是否成功

1
$ docker run --rm -d -p 8080:80 --name nginx -v $PWD/test.htpasswd:/etc/nginx/.htpasswd -v  $PWD/default.conf:/etc/nginx/conf.d/default.conf nginx

打开浏览器,输入http://localhost:8080 就可以看到,网页提示我们输入用户名密码了,输入正确的用户名密码后,才能看到欢迎页。

到此,为 nginx 配置 basic auth 就完成了。更多的配置可以参考 Nginx 官方文档


Nginx 配置 HTTP Basic Auth
https://blog.zhangliangliang.cc/post/nginx-basic-auth.html
作者
Bobby Zhang
发布于
2021年12月13日
许可协议