server {
listen 8001;
server_name localhost;
# 错误日志:在location块中添加错误日志记录,以便于问题排查。
error_log /var/log/nginx/8001_down_error.log;
# 通过valid_referers指令来限制允许访问资源的来源。
valid_referers none blocked server_names localhost yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
# $binary_remote_addr:表示使用客户端IP地址作为匹配键。
# zone=mylimit:10m:定义了一个名为mylimit的共享内存区域,大小为10MB。
# rate=1r/s:设置每秒最多允许1个请求。
# 这个指令通常与limit_req指令一起使用,用于限制特定URL或位置的请求速率。
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
location /down {
# limit_req指令指定了在超出设定速率时的行为。burst=5表示可以允许5个突发请求超出设定的速率;nodelay表示在达到最大并发数时立即返回错误(默认是延迟响应)。
limit_req zone=mylimit burst=5 nodelay;
expires 24h;
# 强制下载
if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|rar|docx|exe|xlsx|xls|ppt|pptx|jar)$){
add_header Content-Disposition attachment;
}
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
# 资源位置
alias /data/downloads;
# 是否可以看到文件夹目录
autoindex on;
}
location / {
return 301 /down;
}
}
标签:zone,header,req,server,Nginx,add,mylimit,下载
From: https://www.cnblogs.com/a999/p/17898554.html