配置文件nginx.conf,实现以下功能:
转发
所有对 abc.cn:8800
的请求都会被代理到 http://abc.cn:1299/Web/
。
例如,请求 abc.cn/eeee
会被转发到 http://abc.cn:1299/Web/eeee
。
请求限流
每个 IP 地址的最大连接数被限制为 10 个。
每个 IP 地址的请求速率被限制为每分钟 60 次请求(允许突发请求最多 5 次,并且不延迟)实现 削峰填谷 的效果。
nginx.conf
#user nobody;
worker_processes auto; #自动设置工作进程的数量,通常为 CPU 核心数。
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
daemon on; #使 Nginx 以守护进程模式运行,通常这也是默认设置。
events { # 块配置 Nginx 处理连接的方式。
worker_connections 1024; #每个工作进程的最大连接数设置为 1024。
}
http { #配置 HTTP 服务器的设置
include mime.types; #包含 MIME 类型的配置文件,以便正确识别文件类型
default_type application/octet-stream; #默认的 MIME 类型是 application/octet-stream,用于未知文件类型
sendfile on; #启用高效的文件传输方式
keepalive_timeout 65; #连接保持活动的时间设置为 65 秒
limit_conn_zone $binary_remote_addr zone=addr:20m; #设置每个客户端 IP 的连接数限制,存储在 addr 区域,大小为 20MB
limit_req_zone $binary_remote_addr zone=one:20m rate=60r/m; #设置每个客户端 IP 的请求速率限制,存储在 one 区域,大小为 20MB,速率为每分钟 60 次请求。
server { # 配置一个虚拟主机
listen 8800; #服务器监听 8800 端口
server_name abc.cn; #指定服务器的域名为 abc.cn
location / { #配置对根路径的处理
limit_conn addr 10 ; #限制每个 IP 地址的最大连接数为 10
limit_req zone=one burst=5 nodelay; #限制每个 IP 地址的请求速率,允许突发请求最多为 5 次,并且不延迟
proxy_pass http://abc.cn:1299/Web/; #将请求代理转发到 http://g1e.cn:1299/Wa9b0/
proxy_set_header X-Real-IP $remote_addr; #设置代理请求头 X-Real-IP 为客户端的真实 IP 地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置代理请求头 X-Forwarded-For 为客户端的真实 IP 地址,追加到现有的 X-Forwarded-For 头中
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Burst
得不到执行的请求暂时缓存起来
burst=5 一分钟内如果有70个请求,那么60个请求会匀速执行,5个请求会缓存到下一分钟执行,5个请求会失败(503)
NoDelay
不加nodelay:每秒匀速执行1个请求
nodelay :请求立即执行, 如果一分钟的第一秒有30 个请求,那么这在第一秒就会之情这30个请求
Delay
delay=4 ,前4个请求匀速执行,从第5个请求开始 立即执行