今天新上了一个demo网站,使用了 CloudFlare 做 CDN,但打开页面的时候总是不对,始终有一个文件无法获取,报错:net::ERR_HTTP2_PROTOCOL_ERROR 200,后面在网上搜索得到解决方案,在 nginx config server 里加上 proxy_max_temp_file_size 0

1
2
3
4
5
6
server {  
    listen 443 ssl http2;  
    listen [::]:443 ssl http2;  
    server_name xxx.com;  
    proxy_max_temp_file_size 0;  
}

原因呢 nginx 把返回的文件先放到缓冲区当中,然后再返回给客户端,边收边传,不是全部接收完再传给客户端,接在 CloudFlare 上出现了问题。

参考: https://blog.asec01.net/Nginx-HTTP2-PROTOCOL-ERROR-200/