Nginx 限速三剑客基础使用

本贴最后更新于 591 天前,其中的信息可能已经时移世改

Nginx 限速三剑客基础使用

一、前言

  1. ngx_http_limit_req_module**:用于限制请求速率。**
  2. ngx_http_limit_conn_module**:用于限制并发连接数。**
  3. ngx_http_core_module**:Nginx 的核心模块,提供了一般的 HTTP 配置和请求处理。。**

二、limit_req_module

 http {      # 配置限制请求速率      limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;    server {          listen 80;          server_name example.com;            # 配置请求速率限制          location /api/ {              limit_req zone=one burst=10;              # 其他配置         }  }  }

在上面的示例中:

  • limit_req_zone** 创建一个请求速率的为 10m 的内存区域该区域叫做 one,通过 $binary_remote_addr 获取每个客户端 IP,IP 地址的请求速率都会在这个区域内进行跟踪,每秒不得超过 5 次请求。**
  • limit_req** 指令用于在 /api/ 路径下限制请求速率。在此示例中,每秒最多允许 5 个请求,突发请求不超过 10 个。**
  • 如果超过了请求速率 Nginx 返回 429 响应。

三、http_limit_conn_module

 http {     # 配置限制并发连接数     limit_conn_zone $binary_remote_addr zone=addr:10m;       server {         listen 80;         server_name example.com;           # 配置并发连接数限制         location / {             limit_conn addr 10;             # 其他配置         }                   # 其他服务器块和配置     }           }
  • limit_conn_zone** 创建一个并发连接限制的为 10m 的内存区域该区域叫做 addr,通过 $binary_remote_addr 获取每个客户端 IP,IP 地址的请求速率都会在这个区域内进行跟踪。**
  • limit_conn** 指令用于在其他路径下限制并发连接数。在此示例中,每个客户端最多允许 10 个并发连接。**
  • **超出并发连接返回 503 响应。 **

四、http_core_module

 # 全局配置块  user nginx;  worker_processes auto;  # 自动选择工作进程数量  error_log /var/log/nginx/error.log;    events {      worker_connections 1024;  }    http {      # HTTP全局配置块      include /etc/nginx/mime.types;      default_type application/octet-stream;      sendfile on;  # 启用sendfile      tcp_nopush on;  # 启用TCP NOPUSH      keepalive_timeout 65;            # 服务器块,定义虚拟主机      server {          listen 80;  # 监听80端口          server_name example.com www.example.com;            location / {              root /var/www/html;  # 静态文件的根目录              index index.html;     # 默认索引文件         }            location /images/ {              alias /var/www/images/;  # 使用别名来指定不同的目录         }                    # 配置错误页面          error_page 404 /404.html;          error_page 500 502 503 504 /50x.html;                    location = /50x.html {              root /usr/share/nginx/html;         }     }            # 其他服务器块和配置  }  在上面的示例中:    user 指令定义了 Nginx 进程的运行用户。  worker_processes 指令自动选择工作进程数量。  error_log 指令配置错误日志文件的位置。  events 指令定义事件模块的全局配置,包括工作进程数量和最大连接数。  http 指令块包含了 HTTP 配置的全局设置,如 MIME 类型、默认类型、文件传输等。  server 指令块定义了一个虚拟主机,指定了监听端口和服务器名称。  location 指令定义了不同 URL 路径的处理方式,包括静态文件的根目录和索引文件。  alias 指令用于创建一个虚拟目录,将 URL 映射到文件系统的不同位置。  error_page 指令配置了自定义错误页面,并将特定 HTTP 错误代码映射到相应的页面。  这只是一个简单的示例,您可以根据您的需求和网站配置来调整 Nginx 的 http_core_module 部分。此示例用于提供静态内容,但 Nginx 也可以配置为反向代理、负载均衡、SSL 终端等多种用途。    X  nginx限速三剑客http_core_module 示例  ChatGPT  Nginx 的 "限速三剑客" 通常指的是 ngx_http_limit_req_module、ngx_http_limit_conn_module 和 ngx_http_core_module,但 http_core_module 通常不包括在其中,因为它是 Nginx 的核心模块,主要用于全局 HTTP 配置而不是请求速率限制。    以下是一个简单的 Nginx 配置示例,演示如何在 http_core_module 中配置基本的全局 HTTP 设置:    nginx  Copy code  # 全局配置块  user nginx;  # 指定 Nginx 进程的运行用户  worker_processes auto;  # 自动选择工作进程数量  error_log /var/log/nginx/error.log;    events {      worker_connections 1024;  # 每个工作进程允许的最大连接数  }    http {      # HTTP 全局配置块      include /etc/nginx/mime.types;  # 包含 MIME 类型配置文件      default_type application/octet-stream;  # 默认 MIME 类型        sendfile on;  # 启用 sendfile,用于快速传输文件      tcp_nopush on;  # 启用 TCP NOPUSH 以减少传输延迟      keepalive_timeout 65;  # 客户端与服务器之间的持续连接超时时间        # 服务器块,定义虚拟主机      server {          listen 80;  # 监听80端口          server_name example.com www.example.com;  # 域名配置            location / {              root /var/www/html;  # 静态文件的根目录              index index.html;     # 默认索引文件         }            # 配置错误页面          error_page 404 /404.html;          error_page 500 502 503 504 /50x.html;            location = /50x.html {              root /usr/share/nginx/html;         }     }        # 其他服务器块和配置  }  

在上面的示例中:

  • user** 指令定义了 Nginx 进程的运行用户。**
  • worker_processes** 指令自动选择工作进程数量。**
  • error_log** 指令配置错误日志文件的位置。**
  • events** 指令定义事件模块的全局配置,包括工作进程数量和最大连接数。**
  • http** 指令块包含了 HTTP 配置的全局设置,如 MIME 类型、默认类型、文件传输等。**
  • server** 指令块定义了一个虚拟主机,指定了监听端口和服务器名称。**
  • location** 指令定义了不同 URL 路径的处理方式,包括静态文件的根目录和索引文件。**
  • alias** 指令用于创建一个虚拟目录,将 URL 映射到文件系统的不同位置。**
  • error_page** 指令配置了自定义错误页面,并将特定 HTTP 错误代码映射到相应的页面**
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...