我用的 tomcat 搭建的网站,然后用 nginx 做的代理。
问题
网站需要上传文件时出现了一些问题,我上传大约 150M 的视频上传失败。
解决
首先我先想到的是修改 tomcat 配置文件,因为用的这个搭建的网站,查看官方文档后。
文档地址:http://tomcat.apache.org/tomcat-9.0-doc/config/http.html
做了以下修改,Tomcat中修改上传文件大小及上传时间阀值:
- 上传文件大小阀值:在server.xml中的connector元素中添加:maxPostSize=”0” ,0表示无限制(可以自己设置大小200m)
- 连接时间阀值: 在server.xml中的connector元素中添加:connectonTimeout=“200000”,单位毫秒
默认的大小为2097152,即2M,我修改为200M,即209715200
默认时间为20000,即20秒,我修改为200秒,即200000
但是问题没有解决。。。。。。
然后发现自己还用了 nginx 做代理,百度 nginx 上传文件大小限制,发现默认的大小只有 1M。
nginx默认安装路径/etc/nginx/ngxin.conf,绿色安装默认路径/usr/local/nginx/conf/nginx.conf,在/usr/local/nginx/conf/nginx.conf配置文件中设置域名,修改部分配置如下:
-
server
下设置上传文件大小,即所有代理网站路径的上传文件限制都为这么多。 -
文件太大,连接时间可能不够,超过连接时间也会错误,所以再相关代理路径下修改连接时间,
location / {
即该网站以下所有路径最大连接时间都为这么多。 -
最后这个就不怎么重要,就是添加允许的文件格式,创建
location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf|mp4|MOV|MP4)(.*)
。server { listen 80; server_name localhost; # 上传文件的大小限制 client_max_body_size 200m; # nginx缓存限制 client_body_buffer_size 200m; #charset koi8-r; #access_log logs/host.access.log main; location / { # 连接时间 proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect default; } # 文件类型 location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf|mp4|MOV|MP4)(.*) { proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_set_header Host $host; } }
这样配置过后,然后重新运行 nginx,问题终于解决了。
命令:/usr/local/nginx/sbin/nginx -s reload