我在 Docker 映像中有一个 Web 服务,我正在尝试向其上传两个文件:一个 6MB 的文件和一个 18MB 的文件。
在我的本地 Docker 服务中运行时,两个文件都可以正常上传。
在ECS中使用相同的图像,只有6MB的文件成功上传。
6MB 上传成功:
C:\>curl -v -F [email protected] http://52.xxx.xxx.xxx:5000/api/v1/add_model
* Trying 52.xxx.xxx.xxx...
* TCP_NODELAY set
* Connected to 52.xxx.xxx.xxx (52.xxx.xxx.xxx) port 5000 (#0)
> POST /classifierService/api/v1/add_model HTTP/1.1
> Host: 52.xxx.xxx.xxx:5000
> User-Agent: curl/7.57.0
> Accept: */*
> Content-Length: 6526998
> Content-Type: multipart/form-data; boundary=------------------------51a3998e86a60e5c
> Expect: 100-continue
>
* Done waiting for 100-continue
< HTTP/1.1 200 OK
< Content-Type: application/json
< Content-Length: 68178
<
<response body>
然而,18MB 的文件失败并返回空响应。
18MB上传失败:
C:\>curl -v -F [email protected] http://52.xxx.xxx.xxx:5000/api/v1/add_model
* Trying 52.xxx.xxx.xxx...
* TCP_NODELAY set
* Connected to 52.xxx.xxx.xxx (52.xxx.xxx.xxx) port 5000 (#0)
> POST /classifierService/api/v1/add_model HTTP/1.1
> Host: 52.xxx.xxx.xxx:5000
> User-Agent: curl/7.57.0
> Accept: */*
> Content-Length: 18436586
> Content-Type: multipart/form-data; boundary=------------------------65717bbb45c3da52
> Expect: 100-continue
>
* Done waiting for 100-continue
* Empty reply from server
* Connection #0 to host 52.xxx.xxx.xxx left intact
curl: (52) Empty reply from server
有什么想法可能是什么问题,或者我该如何调试这个问题?
答案1
造成这种情况的原因有很多。其中最明显的是您在服务器上设置的环境。许多(如果不是全部)Web 框架都设置了最大上传限制,以防止 DoS 攻击和其他类似漏洞。
我认为 PHP(例如)将限制设置为 10mb。您需要修改相应的 php.ini 调整参数,如下所示:
memory_limit = 32M
upload_max_filesize = 10M
post_max_size = 20M
...或者您可以修改.htaccess 文件中的值:
php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value memory_limit 32M
最终,我们需要更多有关环境的信息来给出更具体的答案。