实现给Nginx的指定网站开启basic认证——http基本认证

一、问题描述

目前我们配置的网站内容都是没有限制,可以让任何人打开浏览器都能够访问,这样就会存在一个问题(可能会存在一些恶意访问的用户进行恶意操作,直接访问到我们的敏感后台路径进行操作,风险就会很大);并且我们也只是希望这个网站只有我们自己能够访问,其他人访问不了。

二、问题分析

1、我们的网站目前能够让任何人都打开浏览器访问;

2、只是希望这个网站只有我们自己能够访问,其他人访问不了;

根据分析出的的问题其实是需要给在nginx上部署的指定网站开启basic认证即可实现。

三、实现方法

3.1、生成htpasswd的账号密码文件

3.1.1、通过在线的htpasswd网站生成

可以直接在浏览器中输入【htpasswd在线】即可查询到,也可以使用我这里提供的这2个

在线 htpasswd 生成器OSCHINA.NET在线工具,ostools为开发设计人员提供在线工具,提供jsbin在线 CSS、JS 调试,在线 Java API文档,在线 PHP API文档,在线 Node.js API文档,Less CSS编译器,MarkDown编译器等其他在线工具https://tool.oschina.net/htpasswd在线htpasswd生成器在线htpasswd生成工具,在线nginx htpasswd生成https://www.lddgo.net/encrypt/htpasswd

使用在线生成器获取到生成结果后复制该结果,然后在到指定路径下创建一个文件然后将结果粘贴上去就行。

bash 复制代码
# 1、进入需要放置basic用户和密码文件的路径(没有指定路径的话需要使用mkdir nginx命令创建)
mkdir -p /opt/nginx/basicauth/
cd /opt/nginx/basicauth/


# 2、直接在/opt/nginx/basicauth/路径下创建一个名为用户名b.coffeemilk.com.htpasswd的basic文件,然后将我们在在线网站设置用户为coffeemilk,密码为123456的结果粘贴到b.coffeemilk.com.htpasswd文件即可
touch b.coffeemilk.com.htpasswd
vi b.coffeemilk.com.htpasswd

3.1.2、安装htpasswd工具在本机生成

bash 复制代码
# 安装htpasswd工具命令
yum install httpd-tools -y
bash 复制代码
# 查看htpasswd的用法命令
htpasswd --help

|--------|--------|-------------------------------------------------|
| 序号 | 参数 | 参数说明 |
| 1 | -c | 创建一个新文件 |
| 2 | -n | 不更新文件;只是在屏幕上显示文件内容 |
| 3 | -b | 直接在命令行中输入密码,而不是提示后再输入密码 |
| 4 | -i | 不用验证即可直接从输入流中读取到密码内容(只要是方便脚本使用) |
| 5 | -m | 强制对密码进行MD5加密(默认) |
| 6 | -2 | 强制对密码进行SHA-256哈希加密(安全) |
| 7 | -5 | 强制对密码进行SHA-512哈希加密(安全) |
| 8 | -B | 强制对密码进行bcrypt加密(非常安全) |
| 9 | -C | 设置用于bcrypt算法的计算时间 (越高越安全,但速度越慢,默认值:5,有效值:4到31) |
| 10 | -r | 设置用于SHA-256、SHA-512算法的轮数 (越高越安全,但速度越慢,默认值:5000) |
| 11 | -d | 强制对密码进行CRYPT加密(最多8个字符,不安全) |
| 12 | -s | 强制对密码进行SHA-1加密(不安全) |
| 13 | -p | 不对密码进行加密(明文,不安全) |
| 14 | -D | 删除指定的用户 |
| 15 | -v | 验证指定用户的密码 |
| 在Windows和NetWare以外的其他系统上,"-p"标志可能不起作用;SHA-1算法不使用盐,其安全性不如MD5算法 |||
[htpasswd命令的参数详解]

bash 复制代码
# 1、进入需要放置basic用户和密码文件的路径(没有指定路径的话需要使用mkdir nginx命令创建)
mkdir -p /opt/nginx/basicauth/
cd /opt/nginx/basicauth/


# 2、直接在/opt/nginx/basicauth/路径下创建用户名为coffeemilk的basic用户名和密码文件命令
htpasswd -c ./a.coffeemilk.com.htpasswd coffeemilk
bash 复制代码
# 在当前目录下生成一个b.coffeemilk.com.htpasswd文件,用户名coffeemilk,密码123456789,默认采用MD5加密方式
htpasswd -bc ./b.coffeemilk.com.htpasswd coffeemilk 123456789

# 在当前目录下生成一个b.coffeemilk.com.htpasswd文件,用户名coffeemilk,密码123456789,指定采用bcrypt加密方式
htpasswd -5bc ./b.coffeemilk.com.htpasswd coffeemilk 123456789


# 在原有密码文件中增加下一个用户
htpasswd -b ./b.coffeemilk.com.htpasswd test 123456

# 删除指定路径下basic文件内的指定用户(比如删除/opt/nginx/basicauth路径下的这个b.coffeemilk.com.htpasswd的basic文件里面的test用户)
htpasswd -D /opt/nginx/basicauth/b.coffeemilk.com.htpasswd test

3.2、给需要配置的网站设置basic认证

实现将Nginx的每个网站配置单独的nginx配置文件------每个网站单独管理https://blog.csdn.net/xiaochenXIHUA/article/details/140416476?spm=1001.2014.3001.5501进入我们每个网站单独的nginx配置文件修改需要设置basic内容的网站文件即可修改内容如下:

bash 复制代码
# 进入每个网站对应的单独nginx配置文件路径命令
cd /etc/nginx/conf.d

# 编辑指定的网站需要配置basic的nginx配置文件(比如给b.coffeemilk.com网站单独的nginx配置文件b.coffeemilk.com.conf进行编辑)命令
vi b.coffeemilk.com.conf
bash 复制代码
#auth_basic表示开启这个功能,"b.coffeemilk.com"是备注信息,随便写,一些老浏览器能看到,新浏览器都看不到备注信息了。
auth_basic "b.coffeemilk.com";

# 这是basic账号密码文件存放的位置
auth_basic_user_file /opt/nginx/basicauth/b.coffeemilk.com.htpasswd;

3.3、检查配置的Nginx内容是否正确和重启Nginx服务

nginx -t

systemctl restart nginx

3.4、验证basic的效果

在浏览器输入自己已经设置了basic认证的网站(比如我这里的是http://b.coffeemilk.com/),打开该网站后无法直接看到网站内容会直接有一个输入账号密码的弹窗,输入正确后才能够看到网站内容表示成功了,如下图所示:

相关推荐
热爱跑步的恒川1 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面2 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程5 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon6 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon6 小时前
华为eNSP:mux-vlan
网络·安全·华为
点点滴滴的记录6 小时前
RPC核心实现原理
网络·网络协议·rpc
Lionhacker7 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
程思扬8 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
ZachOn1y8 小时前
计算机网络:运输层 —— 运输层概述
网络·tcp/ip·计算机网络·运输层