当前位置: 首页 > 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

http://www.lryc.cn/news/311528.html

相关文章:

  • S2---FPGA-A7板级原理图硬件实战
  • RK DVP NVP6158配置 学习
  • C++基础2:C++基本数据类型和控制结构
  • HFSS仿真双频微带天线学习笔记
  • 【十一】【SQL】外连接(左外连接,右外连接)
  • 敏捷开发模型:一种灵活、协作和持续的软件开发方法
  • 软件设计师10--计算机组成与体系结构章节回顾
  • 数据库分库分表中间件选择
  • 代码随想录算法训练营第22天|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
  • 基于SpringBoot的医护人员排班系统详细开题报告(源码)
  • CDH6.3.1离线安装
  • Pytorch之卷积操作
  • 2024年春招小红书前端实习面试题分享
  • 软件测试--性能测试工具JMeter
  • c++/c图的邻近矩阵表示
  • cocos-lua定时器用法
  • 激活函数Swish(ICLR 2018)
  • 【C++ 标准流,文件流】
  • 【排序】详解冒泡排序
  • 什么是Docker容器?
  • (C++练习)选择题+编程题
  • 【鸿蒙开发】第十五章 ArkTS基础类库-并发
  • 华为数通方向HCIP-DataCom H12-821题库(多选题:21-40)
  • 【简单模拟】第十三届蓝桥杯省赛C++ B组《刷题统计》(c++)
  • IO-DAY3
  • python实现常见一元随机变量的概率分布
  • 微服务学习
  • 【.NET Core】深入理解IO - 读取器和编写器
  • 【Java项目介绍和界面搭建】拼图小游戏——添加图片
  • 「MySQL」基本操作类型