需要实现的需求如下:
使用 Nginx 做 web 服务,但由于安全问题需求,访问网页时需要输入用户名和密码进行认证。
1. 安装密码生成工具
$ yum -y install httpd-tools
2. 生成用户和密码文件
生成用户和密码
$ htpasswd -c $PWD/password/password.db this-is-user-name
# 回车后输入密码
# -c 创建一个加密文件
# 查看生成的用户和密码
cat password/password.db
如果要修改密码,或者删除密码,请参考下面操作
删除用户和密码
$ htpasswd -D /usr/local/nginx/password username
# -D 删除指定的用户
# 修改用户和密码
$ htpasswd -D /usr/local/nginx/password username
$ htpasswd -b /usr/local/nginx/password username pass
# -D 删除指定的用户
# -b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
# -p htpassswd命令不对密码进行进行加密,即明文密码
3. 配置 Nginx 认证
找到 nginx 配置文件,通常默认的配置文件在/usr/local/nginx/conf/nginx.conf,要对整个站点开启验证,需在配置文件中的server加上认证配置
如果是 docker 安装映射了 /etc/nginx/conf.d 目录的话,需要在指定的 .conf 文件内加上认证配置
auth_basic 和 auth_basic_user_file
server {
listen 80;
server_name localhost;
# ...
auth_basic "请输入用户和密码"; # 验证时的提示信息
auth_basic_user_file /etc/nginx/password/password.db; # 认证文件
location / {
#... 忽略
}
# ...
}
4. 重启/重载Nginx使站点的认证生效
/usr/local/nginx/sbin/nginx -s reload
参考
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 chgocn@gmail.com