Nginx-server-文件下载配置

发布时间 2023-12-13 10:49:13作者: 生生灯火半杯月
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;
        }
 
}