详解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 https ssl 设置受信任证书[转然哥] nginx https ssl 设置受信任证书[原创]

    1. 安装nginx 支持ssl模块 http://nginx.org/en/docs/configure.html yum -y install openssh openssh-devel (http_ssl_module 模块依赖openssh) ./configure –sbin-path=/usr/local/nginx/nginx –conf-…

    Nginx 2023年4月13日
    00
  • Nginx之gzip模块

    一、Gzip模块简介 ngx_http_gzip_module模块是使用“ gzip”方法压缩响应的过滤器。有助于数据的传输。 二、示例配置 location /{ gzip_http_version 1.1; gzip_comp_level 3; gzip_types text/plain application/json application/java…

    Nginx 2023年4月11日
    00
  • nginx对http请求处理的各个阶段详析

    首先我们要了解一下Nginx的HTTP请求处理过程。 HTTP请求的接收和解析 在接收到HTTP请求后,Nginx会先解析请求头部,并根据请求头部中携带的信息,判断本次请求的是哪个虚拟主机的请求,然后确定该请求所对应的配置。解析完请求头后,Nginx还会重组本次请求的报文,并把该请求转发到后端服务器或处理本地请求。 HTTP请求的重写和重定向 在Nginx的…

    Nginx 2023年5月16日
    00
  • CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架

    <!doctype html> CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架.md CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架阿里云服务器的选择Nginx 的安装MariaDB 的安装PHP 7.1 的安装配置 PHP 与 Ngi…

    Nginx 2023年4月11日
    00
  • centos7部署nginx与vue搭配及403排错

    *以下都是在centos7系统下进行 一.安装 添加yum源sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装sudo yum install nginx 配置服务 设置开机启动sudo syst…

    Nginx 2023年4月16日
    00
  • 浅谈Nginx 中的两种限流方式

    浅谈Nginx 中的两种限流方式 在高并发的场景下,为了保证系统的稳定性和可用性,我们需要对请求进行限流处理。Nginx 作为一款高性能的反向代理和 Web 服务器,也提供了多种限流的方式。本文主要介绍 Nginx 中的两种限流方式:ngx_http_limit_req_module 和 ngx_http_limit_conn_module。 ngx_htt…

    Nginx 2023年5月16日
    00
  • [Nginx] nginx屏蔽某个url和指定参数访问

    有个地址总是被人恶意访问,可以配置nginx屏蔽这个请求 域名/chatIndex?kefu_id=l5702123&ent_id=324 location ~ / { if ( $query_string ~* ^(.*)?kefu_id=l5702123&ent_id=324 ){ return 403; } } 这样对方的请求全都变成4…

    2023年4月9日
    00
  • nginx的rewrite详解

    rewrite模块(ngx_http_rewrite_module) nginx通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。另外该模块需要PCRE支持,应在编译nginx时指定PCRE支持。根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可…

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