某些网页只想给特定的人看的话, HTTP 认证就是一个很好的选择

Nginx 下实现 HTTP 认证并不难

首先创建 HTTP 认证专用的文件夹用于保存 HTTP 认证所需要的账号密码文件

mkdir /etc/nginx/htpasswd

这里的文件可以用 Apache htpasswd 生成, 但是这里已经安装了 Nginx, 没有必要再装 Apache, 所以可以用如下的方法通过 openssl 生成 htpasswd 文件

printf "用户名:$(openssl passwd -crypt 密码)\n" >> /etc/nginx/htpasswd/用于存储的文件名

例如 :

printf "Jonny:$(openssl passwd -crypt J.j123)\n" >> /etc/nginx/htpasswd/Jonny

这里密码要特别注意的是, 密码不能超过8位, 否则就会被截断并且出现警告 :

Warning: truncating password to 8 characters

可以通过这个方式创建多个用户, 但是如果用户名重复, 只有第一个有效

cat /etc/nginx/htpasswd/Jonny
Nginx 实现 HTTP 用户认证-Jonny'Blog

创建好文件之后, 只需要在 Nginx 配置下 Location / {} 中添加如下代码即可实现 HTTP 认证

auth_basic "http auth for Jonny";
auth_basic_user_file /etc/nginx/htpasswd/Jonny;
autoindex on;
Nginx 实现 HTTP 用户认证-Jonny'Blog

配置修改完成之后需要重启 Nginx

systemctl reload nginx

 

打开相关的网站, 就会提示你输入用户名和密码

Nginx 实现 HTTP 用户认证-Jonny'Blog

登录之后就可以正常访问网页了

Nginx 实现 HTTP 用户认证-Jonny'Blog