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 的详细介绍:请点这里
Nginx 的下载地址:请点这里

相关推荐