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 错误代码映射到相应的页面**
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于