gpt4 book ai didi

http - nginx 上传 client_max_body_size 问题

转载 作者:可可西里 更新时间:2023-11-01 15:03:15 25 4
gpt4 key购买 nike

我正在运行 nginx/ruby-on-rails,我有一个简单的多部分表单来上传文件。一切正常,直到我决定限制要上传的文件的最大大小。为此,我将 nginx client_max_body_size 设置为 1m (1MB) 并期望 HTTP 413(请求实体太大)状态作为响应这条规则被打破了。

问题 是当我上传一个 1.2 MB 的文件时,浏览器没有显示 HTTP 413 错误页面,而是挂了一点,然后死机并显示“加载页面时连接已重置” "消息。

我几乎尝试了 nginx 提供的所有选项,但似乎没有任何效果。有人对此有任何想法吗?

这是我的 nginx.conf:

worker_processes  1;
timer_resolution 1000ms;
events {
worker_connections 1024;
}

http {
passenger_root /the_passenger_root;
passenger_ruby /the_ruby;

include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name www.x.com;
client_max_body_size 1M;
passenger_use_global_queue on;
root /the_root;
passenger_enabled on;

error_page 404 /404.html;
error_page 413 /413.html;
}
}

谢谢。


**编辑**

环境/UA:Windows XP/Firefox 3.6.13

最佳答案

当客户端通过发送 413 响应并关闭连接通知它要发送大于 client_max_body_size 的正文时,nginx“快速失败”。

大多数客户端在发送整个请求正文之前不会读取响应。因为nginx关闭连接,客户端向关闭的套接字发送数据,导致TCP RST。

如果您的 HTTP 客户端支持它,处理此问题的最佳方法是发送一个 Expect: 100-Continue header 。 Nginx 从 1.2.7 开始正确支持这一点,如果 Content-Length,将使用 413 Request Entity Too Large 响应而不是 100 Continue 进行回复超过最大体型。

关于http - nginx 上传 client_max_body_size 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com