有时候我们想要限制某个页面的访问权限,需要用户名密码才能进入。
如果使用 nginx 作为反向代理服务器,可以使用 auth_basic 来实现页面加密。
环境需求:
Linux env
nginx
apache2-utils (Debian, Ubuntu) or httpd-tools (RHEL/CentOS/Oracle Linux)
安装环境:
nginx 安装参考:https://niekun.net/index.php/archives/30.html
安装 apache2-utils:
apt-get install apache2-utils
创建账户密码:
使用了 htpasswd 命令创建用户。
关于 htpasswd 的详细使用:https://httpd.apache.org/docs/2.4/programs/htpasswd.html
建议将账户信息文件建立在 nginx 目录,我放在 /etc/nginx/users 目录下:
htpasswd -c /etc/nginx/users/.adminpasswd user1
.adminpasswd 为隐藏的存储所有账户信息的文件,user1 为用户名,回车后会提示输入密码,然后确认密码。
建立其他账户:
htpasswd /etc/nginx/users/.adminpasswd user2
不需要 -c
参数,因为文件已经建立了。
验证账户密码 -v
:
htpasswd -v /etc/nginx/users/.adminpasswd user1
删除账户 -D
:
htpasswd -D /etc/nginx/users/.adminpasswd user1
使用账户:
打开 nginx 配置文件,在需要账户登录的路径段修改如下:
location /path {
...
auth_basic "Administrator's Area";
auth_basic_user_file /etc/nginx/users/.adminpasswd;
...
...
}
重新加载配置文件:
service nginx configtest
service nginx reload
打开对应页面测试是否提示输入账号密码。