当我尝试通过https在服务器(使用jQuery或Dropzone.js)上POST图像时,如何处理Google Chrome(v.51.0)中的net :: ERR_CONNECTION_CLOSED错误。
Firefox在http和https上工作得很好。 Chrome仅限http。没有文件上传的所有内容在Chrome + HTTPS上运行正常。我在php超时结束后收到此错误:
dropzone.min.js:1 POST https://{example.com}/images/upload net::ERR_CONNECTION_CLOSED
没有其他消息。 PHP和Nginx日志都没有。
我的服务器:PHP 7.0.9 + Nginx 1.10 + Ubuntu Server 16.04 + HTTP2.0以及Comodo的SSL证书。
已更新
答案 0 :(得分:0)
这是一种解决方法,而不是问题的解决方案。 在启用了http2的Nginx上,Chrome中发生了此错误。
我能够在nginx中禁用http2(或者只是删除了启用它的选项)。
我更改了:
server {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
收件人:
server {
listen 443 ssl;
listen [::]:443 ssl;
在那之后,chrome在nginx上运行良好。
我的问题特别奇怪的是,它仅在传递超过500个字节的大标头时才发生。在其他所有时间,chrome / ngnx表现良好。在整个过程中,curl都能很好地达到我的目标。此外,当我绕过nginx直接访问端点时,我测试的chrome和所有其他浏览器都可以正常工作。
从我所看到的情况来看,我怀疑这是ALPN的问题。可能是因为我的openssl版本已过时。不过,降级到http 1.1比研究这种可能性要容易得多。
答案 1 :(得分:0)
严格来说,这不是一个具体问题的答案,但是当我遇到一个非常类似的问题时出现了这个问题,因此我会将其张贴在这里,以防它对其他人有所帮助。
我遇到的问题与OP几乎相同,(任何大于128mb的上传都在Chrome中轰炸了),但是我在UB 16.04服务器(nginx代理HTTP / 2)上使用了Plesk,因此任何尝试直接更改nginx设置失败,因为Plesk会覆盖它们。
尽管默认的nginx设置为1mb,默认情况下,Plesk面板会向每个nginx conf文件应用client_max_body_size 128m;
。无论您用PHP nginx设置的内容是什么,只要上传的内容超过25mb,这都会引发问题。我不确定为什么这个数字很重要,也许就是在nginx读取下一个数据块的标头时?可以看出,传入的文件超过了128mb,然后炸毁了Chrome中的ERR_CONNECTION_CLOSED
错误。我不确定,我只知道那是一团糟。
有一个选项可以在Plesk中为nginx添加指令,应该允许您覆盖它,但是如果您尝试添加任何内容,则会抛出“重复输入”错误:
Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/example.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed
我花了很长时间试图找到解决方法,然后在Plesk的支持论坛上找到了this article,该论坛实际上可以完成任务。
只需几个简单的步骤(本文中都有详细说明)即可使它工作,但以防万一消失在以太里...
使用ssh连接到服务器。
运行以下命令以添加“ client_max_body_size 128m;”到nginx的配置:
echo 'client_max_body_size 128m;' > /etc/nginx/conf.d/aa_client_max_body.conf
因此,服务器范围内“ client_max_body_size”指令的默认值为128m。可以在此处设置任何其他值。
将以下行添加到/usr/local/psa/admin/conf/panel.ini:
[webserver]
nginxClientMaxBodySize =
如果panel.ini文件不存在,请使用示例文件创建它:
cp /usr/local/psa/admin/conf/panel.ini.sample /usr/local/psa/admin/conf/panel.ini
确保文件/usr/local/psa/admin/conf/panel.ini的权限正确,否则解决方法将不起作用:
ls -la /usr/local/psa/admin/conf/panel.ini
-rw-r--r-- 1 root root 1857 Nov 26 11:03 /usr/local/psa/admin/conf/panel.ini
为所有虚拟主机重新生成NGINX \ Apache配置文件以应用/usr/local/psa/admin/conf/panel.ini中的更改:
plesk sbin httpdmng --reconfigure-all
因此,vhost的配置文件中将没有定义“ client_max_body_size”指令。
重新启动NGINX:
service nginx restart
现在可以在域> example.com> Apache和Nginx设置>每个域的其他nginx指令中指定client_max_body_size的自定义值,即:
client_max_body_size 512m;
这有效100%。完全归功于Bulat Tsydenov(此解决方案的作者)。
保存了我的培根:)