某些网页只想给特定的人看的话, 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 配置下 Location / {} 中添加如下代码即可实现 HTTP 认证
auth_basic "http auth for Jonny";
auth_basic_user_file /etc/nginx/htpasswd/Jonny;
autoindex on;

配置修改完成之后需要重启 Nginx
systemctl reload nginx
打开相关的网站, 就会提示你输入用户名和密码

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

自創文章, 原著 : Jonny, 如若需要轉發, 在已經授權的情況下請註明出處 :《Nginx 实现 HTTP 用户认证》https://jonny.vip/2017/06/28/nginx-%e5%ae%9e%e7%8e%b0-http-%e7%94%a8%e6%88%b7%e8%ae%a4%e8%af%81/
Leave a Reply