实现给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/),打开该网站后无法直接看到网站内容会直接有一个输入账号密码的弹窗,输入正确后才能够看到网站内容表示成功了,如下图所示:

相关推荐
字节全栈_rJF16 分钟前
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
网络·智能路由器·php
EchoToMe19 分钟前
电信传输基本理论/5G网络层次架构——超三万字详解:适用期末考试/考研/工作
网络·5g·架构
doubt。1 小时前
8.攻防世界Web_php_wrong_nginx_config
网络·安全·web安全·网络安全
没有名字的小羊2 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全
m0_465215792 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
esmember2 小时前
电路研究9.2.6——合宙Air780EP中HTTP——HTTP GET 相关命令使用方法研究
网络·网络协议·http·at指令
xianwu5433 小时前
反向代理模块jmh
开发语言·网络·数据库·c++·mysql
杨浦老苏4 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
weisian1515 小时前
消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)
websocket·网络协议
一ge科研小菜鸡6 小时前
网络安全攻防实战:从基础防护到高级对抗
网络