net::ERR_HTTP2_PROTOCOL_ERROR 200 错误
某一天突然发现网站打不开了,然后用Chrome浏览器调试访问,发现资源报错net::ERR_HTTP2_PROTOCOL_ERROR,状态码又是200,表示客户端到服务器的链接是正常的,能建立正常链接,但是就是资源请求不回来。
查了半天资料发现有一个解决方案,在nginx反向代理location字段加入以下内容并重启nginx服务即可解决
proxy_max_temp_file_size 0;
但是,看了一下nginx配置发现没有proxy_max_temp_file_size配置,走的默认配置。看来一下默认配置是1024M,按理说不应该不会超出1024M大的缓冲区。于是查看了一下nginx日志,发现nginx日志内存已满,清理后,再次访问已恢复正常。
额外扩展:
nginx缓冲区默认启用的,启用缓冲后,nginx会尽快从代理服务器接收响应,并将其保存到proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果整个响应无法放入内存,可以将部分响应保存到磁盘上的临时文件中。写入临时文件由proxy_max_temp_file_size和proxy_temp_file_write_size指令控制。
参考:
- https://stackoverflow.com/questions/58215104/whats-the-neterr-http2-protocol-error-about
- http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size