上传大小控制
client_max_body_size
设置最大客户端请求体大小
默认大小1M,可以使用在http, server, location块。
根据不同的请求路径设置不同的大小控制
server {
listen 9001;
client_max_body_size 2M;
location / {
root D:\\server\\nginx-1.22.0\\html\\9001;
}
location /upload/large {
# 针对大文件上传路径,设置 50MB 限制
client_max_body_size 50M;
}
location /upload/small {
# 针对小文件上传路径,设置 10MB 限制
client_max_body_size 10M;
}
}
下载控制
下载速度控制
limit_rate $rate
限制文件下载速度,默认值是limit_rate 0;不进行下载速度控制。$rate 用来指定每秒钟下载允许下载的数据量大小。
limit_rate 指令的作用域可以是http, server, location, if in location。
限制文件下载
server {
listen 9001;
limit_rate 100k;
location / {
root html;
}
}
这样下载该server下的文件将会限制下载速度为每秒100kb。
limit_rate_after
limit_rate_after 指令可以设置在传输一定量的数据后开始限制下载速度。它通常用于当文件已经开始下载时,限制后续的下载速度。
location /download {
root html;
limit_rate_after 2M;
limit_rate 100k;
}
上面配置是当下载完成2M后开始进行限速,每秒为100kb。
不同条件控制下载速度
如果你希望根据不同的条件(如请求的文件类型、客户端 IP、或者请求的文件大小等)来控制下载速度,可以结合 map 指令和 limit_rate 实现更复杂的逻辑。
http {
map $http_user_agent $download_speed {
default 100k; # 默认速度限制 100KB/s
~*Chrome 300k; # 对于 Chrome 浏览器,下载速度限制为 300KB/s
~*Firefox 200k; # 对于 Firefox 浏览器,下载速度限制为 200KB/s
}
server {
listen 9001;
location /donload/ {
# 使用 map 动态设置下载速度
limit_rate $download_speed;
root html;
}
}
}