这次阿航需要为公司的某网站开启远程访问, 但是仅允许公司内部员工使用. 本篇文章就来记录下如何为Nginx 设置密码/开启密码验证/需用户名密码才能访问.
效果
有图有真相, 我们最终要实现的效果如下:


前置条件
若要顺利阅读本篇文章, 需要你具备如下条件:
- 掌握Nginx基础.
- 掌握bash/shell的基本命令.
本篇文章的环境:
操作系统 | CentOS 7 |
nginx | 1.8+ |
一定要注意环境的差异, 考虑不兼容的可能性; 并且具备以上条件. 否则阅读本篇博客可能会给你带来困扰.
实战开始
安装生成账号密码工具
yum install httpd-tools
如果yum下载过慢, 请阅读这篇文章开启加速.
如果提示Is this ok [y/d/N]:
, 输入y
并点击回车.
生成账号密码
输入以下命令, 生成账号密码文件:
htpasswd -bc 文件路径 用户名 密码
比如:
htpasswd -bc /usr/root.db root 123456
为nginx配置账号密码校验
进入nginx配置文件. 找到你要添加账号密码验证的server
. 为其添加两行代码:
server {
listen 80;
server_name hello.com;
auth_basic "Please enter password"; # 密码提示
auth_basic_user_file /usr/root.db; # 填写上面你生成的账户密码文件路径
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
重启nginx(两种方式, 按需选择):
nginx -s reload
或
service nginx restart
🟢 重启完成后, 访问你的链接. 应该会有如下效果:


重新验证
目前阿航仅知道清除浏览器缓存(CTRL
+SHIFT
+DEL
)后, 可重新登录. 若同学们知道其他方法, 欢迎在下方评论区进行讨论.
感谢
- nginx 使用密码认证
- Pexels 上的 Bich Tran 拍摄的图片