nginx配置反向代理,文件上传模块

upstream tornado{
server 127.0.0.1:8000;
}
server {
listen 80;
server_name render.infra.lzyco.com;
location /upload {
upload_pass /uploadFile;
upload_store /tmp/tornado;
# upload_limit_rate 1024k;
upload_set_form_field "${upload_field_name}_name" $upload_file_name;
upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;
upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;
upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;
upload_pass_form_field "^submit$|^description$";

client_max_body_size 1000m;

}

location /uploadFile {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X-Scheme $scheme;

proxy_pass http://tornado;
}

location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X-Scheme $scheme;

proxy_pass http://tornado;
client_max_body_size 1000m;
}

}

转载于:https://www.cnblogs.com/mylele/p/5105343.html

### 配置Nginx作为反向代理支持大文件上传 为了使Nginx能够高效地处理和支持大文件上传,需要调整几个关键的配置参数。这些参数不仅影响到客户端请求的最大大小限制,还会涉及连接超时时间以及其他性能调优选项。 #### 1. 调整 `client_max_body_size` 参数 默认情况下,Nginx 对于 HTTP 请求体的大小有一个上限,默认值通常是 1MB。如果要允许更大的文件上传,则需增加此限制: ```nginx http { client_max_body_size 100M; # 设置最大可接受的请求体大小为 100MB } ``` 该指令可以在全局范围内的 `http` 块中定义,也可以限定在特定的虚拟主机(server block)或者位置(location block)下生效[^1]。 #### 2. 修改读取和写入超时时间 对于较大的文件传输过程来说,网络延迟可能会导致操作耗时较长。因此建议适当延长 Nginx 的读写超时时间以防止因等待过久而中断会话: ```nginx server { ... client_body_timeout 120s; # 客户端发送 body 数据的时间间隔超过指定秒数则断开连接 send_timeout 120s; # 向客户端发送响应数据包之间最长停顿时间为 120 秒 } ``` 以上两个参数分别控制了接收来自用户的 POST 数据所需时间和返回给用户的结果推送时限[^3]。 #### 3. 缓冲区设置优化 当启用缓冲机制时,Nginx 将尝试先将整个请求主体存储至内存再传递给后端服务;但如果遇到超出预设阈值的大对象,则转存硬盘临时目录完成后续流程。可以通过如下方式自定义相关行为: ```nginx server { ... client_body_buffer_size 128k; # 单位字节, 每个请求分配多少空间用于保存body部分的内容 proxy_buffers 4 64k; # 设定proxy模块使用的buffer数量及其单个尺寸 proxy_busy_buffers_size 128k; # 当所有可用buffers都被占用时仍能保留的数据量 proxy_temp_file_write_size 64k; # 初始阶段创建临时文件所写的最小块大小 } ``` 这里需要注意的是,在高并发环境下频繁触发磁盘 I/O 可能会对整体效率造成负面影响,所以应权衡好两者之间的关系并合理规划硬件资源配置情况下的最优解法。 #### 4. SSL/TLS 加密通信保障安全性 (可选) 如果是敏感资料类别的大型档案交换场合,则推荐开启 HTTPS 来保护信息安全免受中间人攻击威胁: ```nginx server { listen 443 ssl; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/private.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } ``` 确保采用现代加密标准的同时关闭不安全协议版本有助于提升防护等级。 --- ### 总结 综上所述,通过调节上述各项核心指标即可满足大多数场景下关于大规模二进制流提交的需求。当然实际部署过程中还需综合考虑目标平台的具体特性以及业务逻辑特殊要求等因素进一步微调策略达到理想效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值