如何给网站开启Basic Auth认证

问题场景

如何给某个目录增加授权访问?如使用特定的用户名和密码登录
如何防止端口被直接扫描?
这里就可以使用到Basic Auth认证的方式了

使用面板开启

一键开启

使用宝塔面板直接开启,设置用户名和密码均为test

btpanel-basic-auth.png

过程分析

实际上,面板上一键开启是在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
© 版权声明
THE END
喜欢就支持一下吧
点赞94
分享
评论 抢沙发

请登录后发表评论