温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
Apache/Nginx 自带 401 密码验证,相较于开发一套登录系统,更为简单方便,下面来说说如何生成密码以及如何启用。
生成密码
401 验证密码可以利用 Apache 的 htpasswd
,也可以利用 OpenSSL 的 passwd
,可自行视方便程度选择,比如 OpenSSL 系统一般自带,如果服务器安装的是 Nginx,就可以直接使用 OpenSSL 的 passwd,如果安装的是 Apache 则随意。
htpasswd
安装软件
# yum install httpd-tools -y #适用 centos
$ sudo apt-get install apache2-utils -y #适用 ubuntu
生成/修改/删除密码
$ htpasswd -c /var/www/html/.htpasswd user1 #回车会要求输入两遍密码,会清除已有的所有用户
$ htpasswd -bc /var/www/html/.htpasswd user1 password #不用回车,直接指定 user1 的密码 为password
$ htpasswd -b /var/www/html/.htpasswd user2 password #添加一个用户,如果用户已存在,则是修改密码
$ htpasswd -D /var/www/html/.htpasswd user2 #删除用户
/var/www/html/.htpasswd 是验证用户密码存储的文件位置
openssl
安装软件
一般系统默认自带,如果是最小化安装,可以执行下列命令安装
# yum install openssl openssl-devel -y #适用 centos
# apt install openssl openssl-devel -y #适用 ubuntu
生成密码
# printf "your_username:$(openssl passwd -crypt your_password)\n" >> /var/www/html/.htpasswd
启用 401 密码验证
Apache/Nginx 默认已编译密码验证模块,如 Nginx 是 ngx_http_auth_basic_module,如果没有开启
以重新编译加上开启参数即可。
Apache
在配置文件中将需要保护的路径 添加 <Directory> 并开启 basic 认证:
<Directory /data/webroot/mail_admin >
......
AuthType Basic
AuthName "Authority Required" # 验证时的提示信息,但并非所有终端都支持显示
AuthUserFile /var/www/html/.htpasswd
Require user admin
......
</Directory>
重启生效。
Nginx
同样在需要保护的地方添加 basic 认证:
......
location /
.......
auth_basic "Authority Required"; # 验证时的提示信息,但并非所有终端都支持显示
auth_basic_user_file /var/www/html/.htpasswd ;
.......
}
......
同样重启生效。