Nginx 限速三剑客基础使用
一、前言
- ngx_http_limit_req_module**:用于限制请求速率。**
- ngx_http_limit_conn_module**:用于限制并发连接数。**
- 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 错误代码映射到相应的页面**
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于