问题场景
如何给某个目录增加授权访问?如使用特定的用户名和密码登录
如何防止端口被直接扫描?
这里就可以使用到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
© 版权声明
THE END
暂无评论内容