摘要訊息 : 在 Nginx 下打開 HTTP 使用者認證.
0. 前言
某些网页只想给特定的人看的话, 又没有能力或者不想自行设计用户系统的话, 使用 HTTP 认证就是一个很好的选择.
本文在 2022 年 1 月 21 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. 配置
首先创建 HTTP 认证专用的文件夹用于保存 HTTP 认证所需要的账号密码文件 : mkdir /etc/nginx/htpasswd
, 然后通过指令 printf "用户名:$(openssl passwd -crypt 密码)\n" >> /etc/nginx/htpasswd/用于存储的文件名
(例如 printf "httpauth:$(openssl passwd -crypt password)\n" >> /etc/nginx/htpasswd/auth
). 这里密码要特别注意的是, 密码不能超过8位, 否则就会被截断并且出现警告 :
Warning: truncating password to 8 characters
可以通过这个方式创建多个用户, 但是如果用户名重复, 只有第一个是有效的.
创建好文件之后, 只需要在 Nginx 配置下 location / {}
中添加如下代码即可实现 HTTP 认证 :
location / {
#...添加下面两行
auth_basic "阁下需要进行验证!";
auth_basic_user_file /etc/nginx/htpasswd/用于存储的文件名;
#...
}
配置修改完成之后需要使用指令 systemctl reload nginx
来重新载入 Nginx 配置档案. 之后打开相关的网站, 就会提示你输入用户名和密码 :
需要注意的是, 我们在 auth_basic "阁下需要进行验证!";
中给出了提示, 但是 Safari 并不会给出这样的提示, 而 Chrome 会给出这样的提示.
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :