背景 周日把博客的版本升级到最新,顺便又从新部署了nginx和php的环境。使用了php7。从新部署环境后发现原先发布博客文章时,编辑框不能正常显示。如图:
分析
查看了html源代码,发现html源代码被截断了。因此,导致网页内容显示不全。
之后的整个分析过程绕了一大圈,即是tcpdump,又是用tcpflow进行网络包分析。最后,还是从nginx的错误日志中发现了端倪。
在nginx的错误日志中发现如下信息:
2016/03/29 06:08:10 [crit] 7042#0: *3 open() /var/lib/nginx/tmp/fastcgi/4/00/0000000004 failed (13: permission denied) while reading upstream, client: 117.72.224.240, server: www.bo56.com, request: get /wp-admin/post-new.php http/1.1, upstream: fastcgi://127.0.0.1:9010, host: www.bo56.com, referrer: http://www.bo56.com/wp-admin/edit.php
错误日志显示, permission denied,说明没权限。把这个目录设置为 775 权限问题解决。网页也就正常显示了。如果php返回的内容过大,nginx会把一部分内容先存到文本文件中,等全部内容都接收完毕后,再一并发送到客户端。
在使用tcpdump抓包分析的时候,发现nginx进程主动向php进程发送了reset标识,终止通信。可能,nginx发现权限有问题,就关闭了连接。只是猜测,没有验证。图如下: