nginx反向代理网页开头出现随机字符的解决方法

问题背景:

今天在测试一个网站的时候,发现在网页首部会有随机的4位字符出现,通过反向代理访问一般页面是没有问题的,而且此类问题只出现在 nginx 反向代理之后的页面,不会出现在 Apache原始的页面。


通过查阅相关资料了解到:

凡是出问题的页面,其传输方式均为chunked(Transfer-Encoding: chunked)。

头部的16进制数(chunk 长度)、尾部的 0(chunk 终结)正是 chunked 传输方式的消息标识。Apache的respone只有一个chunk,而nginx的respone则分为4个chunks,其中第1个chunk的头部、第4个chunk的尾部出现的额外字节正是Apache的respone中原始的chunk 标识。出现额外字符是因为nginx对已经做过chunked的消息重复执行了chunked操作。


解决方法:

在对应站点的vhost文件的server或location段中,添加chunked_transfer_encoding off;即可。





你可能感兴趣的:(nginx,反向代理,随机字符)