Nginx-server-文件下载配置

# $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;


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;
	}
	
	
	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;
	}
 
}
posted @ 2023-12-13 10:46  生生灯火半杯月  阅读(185)  评论(0)    收藏  举报