当前位置: 首页 > news >正文

05. Nginx入门-Nginx访问控制

测试环境

此处使用的yum安装的Nginx路径。
此处域名均在本地配置hosts。

主配置文件

路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}

子配置文件

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;}
}

测试数据

mkdir -p /www/wangmingqu/
echo "王茗渠测试页面" > /www/wangmingqu/index.html

Nginx访问限制–基于请求频率限制

功能作用

主要用途

限制用户访问的频率,合理配置可以减少恶意攻击。
模块名称:ngx_http_limit_req_module

配置范围

http标签下定义请求频率限制规则,server的location标签下引用规则。

启动请求频率限制

  1. 启动请求频率限制前压测
#安装压测工具
yum -y install httpd-tools#启动请求频率限制前压测
ab -n 100 -c 10 http://192.168.131.129/
#格式:ab -n 发起的请求个数 -c 分几次请求 协议://压测的地址或域名/This is ApacheBench, Version 2.3 <$Revision: 1430300 $>					#压测工具的版本
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 192.168.131.129 (be patient).....doneServer Software:        nginx/1.25.3							#被压测的服务器软件版本
Server Hostname:        192.168.131.129						#被压测的服务器地址
Server Port:            80												#被压测的服务器端口Document Path:          /													#申请压测的路径
Document Length:        679 bytes									#申请压测的字节大小Concurrency Level:      10												#并发的级别
Time taken for tests:   0.012 seconds							#请求的耗时
Complete requests:      100												#完成的请求数
Failed requests:        0													#失败的请求数
Write errors:           0													#写入错误的请求数
Total transferred:      80100 bytes								#总传输字节大小
HTML transferred:       67900 bytes								#HTML传输的字节大小
Requests per second:    8203.45 [#/sec] (mean)		#每秒可处理的请求数
Time per request:       1.219 [ms] (mean)					#每个请求消耗的时长
Time per request:       0.122 [ms] (mean, across all concurrent requests)
Transfer rate:          6416.95 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    1   0.4      1       4
Waiting:        0    1   0.3      1       3
Total:          0    1   0.4      1       4Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      190%      195%      198%      299%      4100%      4 (longest request)
  1. 开启请求频率限制

路径:/etc/nginx/conf.d/wangmingqu.conf

limit_req_zone $binary_remote_addr zone=req_zon:10m rate=1r/s;server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;limit_req zone=req_zone;}
}

解释规则与引用

  • 规则格式与解释:
    • “limit_req_zone $binary_remote_addr zone=规则名称:空间大小 流速限制;”
    • limit_req_zone:定义请求频率限制规则;
    • $binary_remote_addr:远程的二进制地址作为参照;
    • zone=req_zon:10m:定义规则的名称,并定义用户请求使用的空间大小;
    • rate=1r/s:定义流水限制,允许每秒请求的次数;
  • 引用格式与解释:
    • “limit_req zone=规则名称;”
    • limit_req:定义引用规则的关键字;
    • zone=req_zone:指定使用的规则名称;
  1. 启动请求频率限制后压测
ab -n 100 -c 10 http://192.168.131.129/This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 192.168.131.129 (be patient).....doneServer Software:        nginx/1.25.3
Server Hostname:        192.168.131.129
Server Port:            80Document Path:          /
Document Length:        679 bytesConcurrency Level:      10
Time taken for tests:   0.011 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      80100 bytes
HTML transferred:       67900 bytes
Requests per second:    9384.38 [#/sec] (mean)
Time per request:       1.066 [ms] (mean)
Time per request:       0.107 [ms] (mean, across all concurrent requests)
Transfer rate:          7340.71 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    1   0.3      1       2
Waiting:        0    1   0.2      1       2
Total:          1    1   0.3      1       2Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      190%      195%      198%      299%      2100%      2 (longest request)

Nginx访问限制–基于连接个数限制

功能作用

主要用途

限制用户访问次数,合理配置可以减少恶意攻击。
模块名称:ngx_http_limit_conn_module

配置范围

启动连接次数限制

开启请求频率限制
路径:/etc/nginx/conf.d/wangmingqu.conf

limit_conn_zone $binary_remote_addr zone=conn_zone:10m;server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;limit_conn conn_zone 1;}
}

解释规则与引用

  • 规则格式与解释:
    • “limit_conn_zone $binary_remote_addr zone=规则名称:空间大小;”
    • limit_conn_zone:定义请求次数限制规则;
    • $binary_remote_addr:远程的二进制地址作为参照;
    • zone=conn_zone:10m:定义规则的名称,并定义用户请求使用的空间大小;
  • 引用格式与解释:
    • “limit_conn 规则名称 TCP连接个数;”

Nginx访问控制–基于IP访问控制

功能作用

主要用途

基于IP的访问控制,可以设置黑白名单,允许或阻止某个、某些IP访问。
模块名称:ngx_http_access_module

配置范围

可以配置http、server、location标签;
http标签中配置,表示全局设置;
server标签中配置,表示网站设置;
location标签中配置,表示某个匹配设置;

启动IP访问控制

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.wangmingqu.com;charset utf-8;allow 192.168.131.1;deny all;location / {root /www/wangmingqu/;index index.html index.htm;}
}

访问截图
image.png
拦截日志

2024/01/17 01:33:55 [error] 32484#32484: *16 access forbidden by rule, client: 192.168.131.129, server: wang.wangmingqu.com, request: "GET / HTTP/1.1", host: "wang.wangmingqu.com"

规则解释

  1. allow:运行访问的地址,即白名单;
  2. deny:禁止访问的地址,即黑名单;
  3. 192.169.1.101:表示单个地址;
  4. 192.169.1.0/24:表示一个网段;
  5. 如果同一网段中有几段连续地址,需要一个一个的写;
  6. 编辑规则:禁止所有,允许个别;允许所有,禁止个别;

Nginx访问控制–基于用户访问控制

功能作用

主要用途

基于用户访问控制,可以让需要登录的用户账号密码登录。
模块名称:ngx_http_auth_basic_module

配置范围

可以配置在http、server、location标签下。
http标签中配置,表示全局设置;
server标签中配置,表示网站设置;
location标签中配置,表示某个匹配设置;

启动用户访问控制

  1. 建立认证文件
#安装httpd-tools工具
yum -y install httpd-tools#创建用户及密码
htpasswd -cm /etc/nginx/conf.d/.passwd wangmingqu#增加用户及密码
htpasswd -m /etc/nginx/conf.d/.passwd changmengka#查看生成的用户及密码
cat /etc/nginx/conf.d/.passwd
  1. 启动认证

路径:/etc/nginx/conf.d/wangmingqu.conf

server {auth_basic "账号密码登录";														#认证提示信息auth_basic_user_file /etc/nginx/conf.d/.passwd;		#认证文件信息listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;}}
  1. 验证访问
nginx -t
systemctl reload nginx

账号密码验证
image.png
登录完成后页面展示
image.png

相关文章:

05. Nginx入门-Nginx访问控制

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…...

S2---FPGA-A7板级原理图硬件实战

视频链接 FPGA-A7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-A7板级原理图硬件实战 基于XC7A100TFGG484的FPGA硬件设计流程图 A7核心板&#xff0c;是基于XILINX公司的ARTIX-7系列100T的XC7A100T,2FGG484I这款芯片开发的高性能核心板&#xff0c;具有高速&#xff0c;高带宽&a…...

RK DVP NVP6158配置 学习

NVP6158简介 NVP6158C是一款4通道通用RX&#xff0c;提供高质量图像的芯片。它接受来自摄像机和其他视频信号的独立4通道通用输入来源。它将4通道通用1M至8M 7.5P视频格式数字化并解码为代表8位ITU-R BT.656/1120 4:2:2格式的数字分量视频&#xff0c;并将单独的BT.601格式与27…...

C++基础2:C++基本数据类型和控制结构

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构 2.1 C基本数据类型 程序是由算法…...

HFSS仿真双频微带天线学习笔记

HFSS仿真双频微带天线 文章目录 HFSS仿真双频微带天线1、 求解器设置2、 建模3、 激励方式设置4、 边界条件设置5、 扫频设置6、 设计检查&#xff0c;仿真分析7、 数据后处理 这里重点关注HFSS软件的操作&#xff0c;关于理论知识将在后面的文章中进行更新。 设计要求&#xf…...

【十一】【SQL】外连接(左外连接,右外连接)

数据库中的外连接&#xff08;Outer Join&#xff09;用于连接两个表&#xff0c;并包括两个表中的匹配行以及左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;中未匹配的行。外连接分为两种主要类型&#xff1a; 左外连接&#xff08;LEFT OU…...

敏捷开发模型:一种灵活、协作和持续的软件开发方法

敏捷开发模型&#xff1a;一种灵活、协作和持续的软件开发方法 引言 在软件开发领域&#xff0c;随着市场需求的不断变化和技术的迅速发展&#xff0c;传统的瀑布模型逐渐暴露出其局限性。为了应对这些挑战&#xff0c;敏捷开发模型应运而生。敏捷开发模型强调灵活、协作和持…...

软件设计师10--计算机组成与体系结构章节回顾

软件设计师10--计算机组成与体系结构章节回顾 章节重要内容考情分析 章节重要内容 考情分析...

数据库分库分表中间件选择

目前分库分表的中间件有三种设计思路&#xff0c;分别是&#xff1a; 采用分散式架构&#xff0c;适用于用Java开发的高性能轻量级OLTP应用程序&#xff0c;以Sharding-JDBC为代表。采用中间层Proxy架构&#xff0c;提供了静态输入和所有语言支持&#xff0c;适用于OLAP应用程…...

代码随想录算法训练营第22天|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 一、力扣235.二叉搜索树的最近公共祖先1.1 题目1.2 思路1.3 代码 二、力扣701.二叉搜索树中的插入操作2.1 题目2.2 思路2.3 代码 三、力扣450.删除二叉搜索树中的节点3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣235.二叉搜索树的最近公共祖先 1.1 题目 1.2 思路 利用二叉…...

基于SpringBoot的医护人员排班系统详细开题报告(源码)

项目源码&#xff1a;https://gitee.com/oklongmm/biye2​ 引言 医护人员排班系统是医疗机构中的重点管理工作之一。借助现代化的计算机技术&#xff0c;可以大大提升排班的效率和精准度。因此&#xff0c;本研究旨在使用SpringBoot框架设计和实现一个功能完善的医护人员排班…...

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…...

Pytorch之卷积操作

卷积是一种基本的数学操作&#xff0c;常用于信号处理和图像处理领域。在计算机视觉中&#xff0c;卷积操作是一种重要的技术&#xff0c;用于提取图像的特征并进行图像处理。 卷积操作基于一个卷积核&#xff08;也称为滤波器或权重&#xff09;&#xff0c;它是一个小的矩阵…...

2024年春招小红书前端实习面试题分享

文章目录 导文面试重点一、方便介绍一下&#xff0c;你之前实习都做了什么嘛&#xff1f;二、 可以讲一下封装组件相关逻辑嘛&#xff1f;1. 为什么要封装组件&#xff1f;2. 封装组件的步骤3. 封装组件的原则4. 组件的复用和扩展5. 组件的维护和文档 三、项目的性能优化你有什…...

软件测试--性能测试工具JMeter

软件测试--性能测试工具JMeter 主流性能测试工具1.主流性能测试工具Loadrunner和Jmeter对比 —— 相同点2.主流性能测试工具Loadrunner和Jmeter对比 —— 不同点JMeter基本使用JMeter环境搭建1.安装JDK:2.安装Jmeter:3.注意点:JMeter功能概要1. JMeter文件目录介绍1.1 bin目…...

c++/c图的邻近矩阵表示

#include<iostream> using namespace std;#define MaxVerterNum 100 typedef char VerterType; typedef int EdgeType; typedef struct {VerterType vexs[MaxVerterNum]; // 存储顶点EdgeType edges[MaxVerterNum][MaxVerterNum]; // 存储邻接矩阵int n, e; // 顶点数和边…...

cocos-lua定时器用法

本文介绍cocos-lua(非Quick-cocos)的定时器用法 定时器按是否会随节点销毁&#xff0c;可分为节点调度器和全局调度器 一.节点调度器 frameworks\cocos2d-x\cocos\scripting\lua-bindings\script\cocos2d\deprecated.lua中实现了了schedule和 performWithDelay 1.1.schedul…...

激活函数Swish(ICLR 2018)

paper&#xff1a;Searching for Activation Functions 背景 深度网络中激活函数的选择对训练和任务表现有显著的影响。目前&#xff0c;最成功和最广泛使用的激活函数是校正线性单元&#xff08;ReLU&#xff09;。虽然各种手工设计的ReLU替代方案被提出&#xff0c;但由于在…...

【C++ 标准流,文件流】

C 标准流&#xff0c;文件流 ■ 标准输入&#xff0c;输出流&#xff0c;■ 文件流&#xff08;ofstream写入&#xff0c;ifstream读取&#xff0c;fstream创建-写入-读取&#xff09;■ open()■ ofstream■ ifstream■ 流插入<<■ 文件位置指针 ■ 标准输入&#xff0c…...

【排序】详解冒泡排序

一、思想 冒泡排序的基本思想是利用两两比较相邻记录的方式&#xff0c;通过一系列的比较和交换操作&#xff0c;使得较大或较小的元素逐渐移动到数列的一端。在每一轮的排序过程中&#xff0c;都会从数列的起始位置开始&#xff0c;对相邻的元素进行比较&#xff0c;如果它们…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...