05. Nginx入门-Nginx访问控制

news2024/11/14 21:15:54

测试环境

此处使用的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).....done


Server 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] received

Connection 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       4

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      2
  99%      4
 100%      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).....done


Server 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.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] received

Connection 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       2

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      2
  99%      2
 100%      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.coloradmin.cn/o/1490183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓开发:时间选择器

activity_main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://sc…

高效备考一级数据分析师考试《CDA Level I 实操训练营》3月30日开课!

曾经报名了考试&#xff0c;买了教程辅导书&#xff0c;却因为各种原因没有坚持学习&#xff0c;这样的经历可能让你感到沮丧和失望。但是&#xff0c;失败并不代表终结&#xff0c;而是迈向成功的必经之路。为了帮助大家能够快速学习考试相关知识&#xff0c;特别为CDA LEVEL …

面试问答总结之Java进阶

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;注解Annotaion &#xff08;java标注&#xff09;&#x1f415;内置注解&#x1f415;元注解 &#x1f380;对象克隆&#x1f415;如何实现克隆&#x1f415;如何实现深克…

Linux第70步_新字符设备驱动的一般模板

1、了解“申请和释放设备号函数” int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) //注册字符设备驱动 //dev&#xff1a;保存申请到的设备号 //baseminor&#xff1a;次设备号的起始地址 //count&#xff1a;要申请的设备数…

【Java设计模式】五、建造者模式

文章目录 1、建造者模式2、案例&#xff1a;共享单车的创建3、其他用途 1、建造者模式 某个对象的构建复杂将复杂的对象的创建 和 属性赋值所分离&#xff0c;使得同样的构建过程可以创建不同的表示建造的过程和细节调用者不需要知道&#xff0c;只需要通过构建者去进行操作 …

Spring(22) Spring中的9种设计模式

目录 一、简单工厂模式&#xff08;Simple Factory&#xff09;二、工厂方法模式&#xff08;Factory Method&#xff09;三、单例模式&#xff08;Singleton&#xff09;四、适配器模式&#xff08;Adapter&#xff09;五、代理模式&#xff08;Proxy&#xff09;七、观察者模…

将jar包打包成exe可执行文件的工具介绍

在Java开发中&#xff0c;将.jar包打包成可执行的.exe文件是一种常见的需求&#xff0c;尤其是在需要将Java应用程序分发给没有安装Java虚拟机&#xff08;JVM&#xff09;的普通用户时。有多种工具可以将Java应用程序打包成.exe文件&#xff0c;这些工具通常使用Java的launch4…

从Win转Mac,我的感受如何

文章目录 前言MacBook优点美观动画流畅安装软件方便轻便、续航强大多数命令和Linux通用系统稳定、安全做工精美、视听体验好CPU性能较好触控板体验好 MacBook缺点缺乏部分软件部分操作逻辑不是很科学&#xff1f;玩不了多少游戏 总结与展望 前言 整个大学期间&#xff0c;我的主…

Flutter中的Provider状态管理工具有哪些优势

在Flutter应用开发中&#xff0c;状态管理是一个至关重要的方面。而Provider作为一种简单、灵活且高效的状态管理工具&#xff0c;在众多Flutter开发者中备受青睐。本文将深入探讨Provider在Flutter中的优势&#xff0c;帮助读者更好地理解其价值和应用场景。 简单易用 Provi…

最全AI领域知识星球:GoAI的学习社区

最全AI领域知识星球&#xff1a;GoAI的学习社区 【作者及星球介绍】 &#x1f468;‍&#x1f4bb;作者简介&#xff1a; CSDN、阿里云人工智能领域博客专家&#xff0c;新星计划计算机视觉导师&#xff0c;百度飞桨PPDE&#xff0c;专注大数据与AI知识分享。 ✨公众号&#x…

深度学习算法优化流程

深度学习算法的一般优化流程&#xff0c;具体的实施方法和步骤可能会根据具体任务和数据的特点而有所不同&#xff0c;优化流程通常包括以下几个主要步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作…

产品推荐 - GX-SOPC-5CEFA5-M484 FPGA核心开发板

● 核心板采用8层板精心设计 ● FPGA&#xff1a;采用Intel&#xff08;ALTERA&#xff09; Cyclone V 5CEFA5&#xff0c;Les为77K&#xff0c;内嵌存储器为4460Kb&#xff0c;硬件乘法器为300个&#xff0c;最大等效门数约2300万门&#xff1b;新增DSP Block&#xff08;150…

STM32基础--初识 STM32

什么是 STM32 对于STM32&#xff0c;从字面意思上来理解&#xff0c;ST是意法半导体&#xff0c;M是Microelectronics的缩写&#xff0c;其中32表示的是32位&#xff0c;那么整合起来理解就是&#xff1a;STM32就是指的ST公司开发的32位微控制器。在如今的32位控制器中&#x…

IPD MM流程之业务策略工具:安索夫矩阵

IPD市场管理流程&#xff0c;华为内部称为“MM流程”&#xff08;Market Management&#xff0c;MM&#xff09;。华为市场管理是通过对市场和细分市场的分析&#xff0c;制定细分市场的策略&#xff0c;形成商业计划&#xff0c;把商业计划落实在日常工作当中。MM流程其中一个…

原始手写helloworld并打jar包允许

1.创建文件夹test统一在其中操作 2.创建hello.java文件 【hello.txt改属性为hello.java】并在里面添加代码 public class hello {public static void main(String[] args) {System.out.println("hello world");} } 注意&#xff1a;类名与文件名一致 然后运行…

动手学深度学习—循环神经网络RNN详解

循环神经网络 循环神经网络的步骤&#xff1a; 处理数据 将数据按照批量大小和时间步数进行处理&#xff0c;最后得到迭代器&#xff0c;即每一个迭代的大小是批量大小时间步数&#xff0c;迭代次数根据整个数据的大小决定&#xff0c;最后得出处理的数据&#xff08;参照第三…

13 丢弃法dropout【李沐动手学深度学习v2笔记】

1. 丢弃法 在层之间加入随机噪音 加入噪音的一些规则 加入噪音后不要改变期望 使用丢弃法 推理中的丢弃法 总结 2. 代码实现 4.6. 暂退法&#xff08;Dropouthttps://zh.d2l.ai/chapter_multilayer-perceptrons/dropout.html 2.1 Dropout import torch from torch import n…

两天学会微服务网关Gateway-Gateway过滤器

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

windows下thinkphp使用php7.4.5版本链接oracle数据库

我用的php运行环境是PHPCUSTOM&#xff0c;感谢大佬Lccee的耐心指导。 大佬的博客https://blog.csdn.net/Lccee?typeblog 首先查看自己的oracle版本 查询语句: SELECT * FROM v$version;根据自己的版本下载对应的oracle客户端&#xff0c;及得版本运行环境与自己的环境位数要…

智慧城市中的数字孪生:数字孪生技术助力智慧城市提高公共服务水平

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、智慧交通管理 2、智慧能源管理 3、智慧环保管理 4、智慧公共安全 四、数字孪生技术助力智慧城市提高公共服务水平的价值 五、挑战与前景 六、结论 一、引言 随着信息技术的飞速发展&…