如何给网站开启Basic Auth认证
作者:FancyPig | 发布时间: | 更新时间:
问题场景
如何给某个目录增加授权访问?如使用特定的用户名和密码登录
如何防止端口被直接扫描?
这里就可以使用到Basic Auth认证的方式了
使用面板开启
一键开启
使用宝塔面板直接开启,设置用户名和密码均为test

过程分析
实际上,面板上一键开启是在conf文件里添加了一行配置
#Directory protection rules, do not manually delete
include /www/server/panel/vhost/nginx/dir_auth/192.168.47.129/*.conf;进入上面的/www/server/panel/vhost/nginx/dir_auth/192.168.47.129目录,可以看到1.conf文件
location ~* ^/pikachu* {
#AUTH_START
auth_basic "Authorization";
auth_basic_user_file /www/server/pass/192.168.47.129/1.pass;
include enable-php-56.conf;
#AUTH_END
}这里面又调用了一个用户文件/www/server/pass/192.168.47.129/1.pass
这里后面的字段应该是经过Base64加密的
test:teH0wLIpW0gyQ使用命令行开启
Debian,Ubuntu环境
安装
使用apt-get命令安装apache2-utils
apt-get install apache2-utils生成用户
账户信息保存至/etc/apache2/.htpasswd,这里设置用户为test
sudo htpasswd -c /etc/apache2/.htpasswd test修改Nginx配置文件
修改Nginx配置文件nginx.conf,在Server{}中或者location /{ ....... }中添加下面两行
auth_basic "FancyPig";#服务器提示信息,随便设置
auth_basic_user_file conf/htpasswd;#生成的用户和密码加密文件RHEL / CentOS / Oracle Linux环境
安装
安装httpd-tools
sudo yum -y install httpd-tools生成用户
账户信息保存至/usr/local/nginx/conf/passwd,这里设置用户为test
sudo htpasswd -c /usr/local/nginx/conf/passwd test输入上面命令后,会让我们连续输入两次密码,输入成功之后系统就为我们生成了加密的密码了
修改Nginx配置文件
修改Nginx配置文件nginx.conf,在Server{}中或者location /{ ....... }中添加下面两行
auth_basic "FancyPig"; #服务器提示信息,随便设置
auth_basic_user_file /usr/local/nginx/conf/passwd;#生成的用户和密码加密文件重启Nginx
检查配置文件是否正确
./nginx -t
./nginx -s reload