详解Nginx http资源请求限制(三种方法)

让我来详细讲解一下“详解Nginx http资源请求限制(三种方法)”的完整攻略。

标题

介绍

文章介绍了如何使用Nginx限制 http 资源请求的三种方法,这些方法包括:

  1. 通过"http limit req module"限制请求次数
  2. 通过"rate-limiting module"限制请求速度
  3. 通过"http referer module"限制请求来源

本文将对这三种方法分别进行详述,并提供示例说明。

http limit req module

这种方法通过使用http limit req module来限制请求次数。首先需要在nginx.conf文件里添加如下内容:

http {
    limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=1r/s;

    server {
        location / {
            limit_req zone=limit_zone burst=5 nodelay;
        }
    }
}

语法说明:

  • limit_req_zone定义一个共享内存区域,存储限制信息。其中$binary_remote_addr是限制的key,用于标识唯一的客户端。zone=limit_zone定义了内存区域的名字和大小,本例中大小为10M。
  • rate指定限速速率,1r/s表示每秒限制一个请求.
  • 在server段中的location指令中添加limit_req指令和对应的zone=limit_zone定义的共享内存区域名称. burst=5表示为第六个请求时开始启动限制,默认为0,可以自行调整。nodelay表示当并发请求达到限制时,不会延迟请求处理。

rate-limiting module

这种方法通过使用rate-limiting module来限制请求速度。首先需要在nginx.conf文件里添加如下内容:

http {
    limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=1r/s;

    server {
        location / {
            limit_rate 100k;
        }
    }
}

语法说明:

  • limit_rate 指定请求处理速度,单位是字节每秒,默认为0,表示不限制速度。这里设置为100k,表示每秒处理100KB数据。
  • 如果 limit_req_zone 没有配置,可以直接使用limit_rate。

http referer module

这种方法通过使用http referer module来限制请求来源。首先需要在nginx.conf文件里添加如下内容:

http {
    server {
        location / {
            valid_referers none blocked server_names;
            if ($invalid_referer) {
                return   403;
            }
        }
    }
}

语法说明:

  • valid_referers 指定合法的referer,包括none、blocked或者server_names等。
  • 如果valid_referers中包含server_names,则必须在http.conf中定义server_names。例如:
http {
    server_names_hash_bucket_size 64;
}

示例:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name example.com;
        server_tokens off;

        access_log /var/log/nginx/default.access.log;
        error_log /var/log/nginx/default.error.log;

        # 请求限制
        limit_req zone=first limit=10 burst=5;
        limit_conn_zone $binary_remote_addr zone=second:10m;
        limit_conn second 3;

        location / {
                try_files $uri $uri/ =404;
        }
}

这里示例中采用了"http limit req module"的方法限制了每个IP最多只能访问10次,并且如果超过10次的流量,则把超过的流量限制在5个请求内。同时还开启了limit_conn,用于限制并发连接数量。

在下面的对话成果中,我们提供了文章中所提到的三种方法的详细说明和示例,如果还有其他问题或疑问,欢迎随时询问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Nginx http资源请求限制(三种方法) - Python技术站

(1)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx常用命令及nginx.conf基本配置

    进入nginx安装目录后执行命令! 1、启动:start nginx 默认是根据nginx.conf来启动的。如果要指定配置文件来启动则使用以下命令即可:nginx -c ./conf/jason.conf2、关闭:nginx -s stop 快速关闭nginx服务。nginx -s quit 优雅的关闭,优雅是指当一个请求被处理完成之后才被关闭。 在lin…

    Nginx 2023年4月11日
    00
  • 详解Nginx 静态文件服务配置及优化

    下面是关于“详解Nginx 静态文件服务配置及优化”的完整攻略,其中包含了两条示例说明。 详解Nginx 静态文件服务配置及优化 为什么需要Nginx 静态文件服务? 由于动态语言如PHP、Python、Java等每次请求都需要解析代码,会对服务器性能造成一定的负担,特别是在并发量较大时,响应速度会非常慢,影响用户的体验。而Nginx的核心为静态文件服务,可…

    Nginx 2023年5月16日
    00
  • Linux环境下安装nginx

    大家好,本篇文章主要讲的是Linux环境下安装nginx教程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 1、安装所需环境 //安装gcc yum install gcc-c++ //安装PCRE pcre-devel yum install -y pcre pcre-devel //安装zlib yum install -y zl…

    Nginx 2023年4月13日
    00
  • nginx中conf下的nginx.conf详解

    1 ######Nginx配置文件nginx.conf中文详解##### 2 3 #定义Nginx运行的用户和用户组 4 user www www; 5 6 #nginx进程数,建议设置为等于CPU总核心数。 7 worker_processes 8; 8 9 #全局错误日志定义类型,[ debug | info | notice | warn | erro…

    Nginx 2023年4月10日
    00
  • 如何配置Nginx的FastCGI缓存目录?

    下面是如何配置Nginx的FastCGI缓存目录的完整攻略: 创建缓存目录 需要先在服务器上创建一个用于缓存的目录,比如 /var/cache/nginx/fastcgi。你可以使用如下命令: sudo mkdir -p /var/cache/nginx/fastcgi sudo chown -R www-data:www-data /var/cache/n…

    Nginx 2023年4月19日
    00
  • [Linux] nginx管理员指南基本功能

    1.运行时控制Nginx进程 NGINX有一个主进程和一个或多个工作进程。 如果启用了缓存,则缓存加载器和缓存管理器进程也会在启动时运行。 主进程的主要目的是读取和评估配置文件,以及维护工作进程。 工作进程执行请求的实际处理。 NGINX依赖于依赖操作系统的机制来有效地在工作进程之间分配请求。 工作进程数由nginx.conf配置文件中的worker_pro…

    2023年4月9日
    00
  • nginx 请求文件 进行用户认证/鉴权: internal(限制为内部调用)

      在进行WEB开发时, 必然会遇到向用户返回文件的场景(如图片, 文档等等), 当返回的文件较小时, 我们可以直接通过接口以数据流的形式向前台返回, 因为文件较小, 因此也不会太过于影响响应速度及服务器性能, 但是当文件较大时, 再使用接口中返回数据流的方式就显得极其不合适了. 此时, 就需要通过 nginx 读取文件资源向用户进行返回.   但是, 如果…

    Nginx 2023年4月9日
    00
  • nginx conf配置备份

      user nginx;worker_processes 2; error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid; events { worker_connections 1024;} http { include /etc/nginx/mime.types; default_ty…

    Nginx 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部