nginx 502 by curl openssl
微信活动项目开发一半、想要本地测试的时候才发现服务器 502 错误了
而上传版本到服务器却是没有问题的
查看 nginx
错误日志发现
1 | 2017/03/29 09:37:36 [error] 4362#0: *245 upstream prematurely closed connection while reading response header from upstream, client: 12 7.0.0.1, server: film.app, request: "GET /activity/GhostScan/index?activity_id=115&cinema_id=59 HTTP/1.1", upstream: "fastcgi://127.0.0 .1:9000", host: "film.app", referrer: "http://film.app/administrator/ActivityGhostScan/link?activity_id=115" |
初步怀疑是本地 nginx
配置有问题,求助度娘修改了如下配置
1 | fastcgi_connect_timeout 300; |
重启 nginx
,然而,并没有什么卵用。。。
再次查看 php-fpm
日志发现子进程在访问项目页面时错误退出
1 | [29-Mar-2017 09:46:41] WARNING: [pool www] child 7007 exited on signal 11 (SIGSEGV) after 26.854745 seconds from start |
使用 dtruss -p php-fpm PID
跟踪 php-fpm 进程,然而,看不懂啊。。。
好吧,放弃了这种思路,一步步从 Yii
框架中断点调试
发现页面在首次请求微信接口后就会报 502 错误,而在之前退出没有问题
接口使用了 curl
请求,我换成 file_get_contents()
之后也没发现问题
难道是 curl
的问题?
接着把该公共方法提出单独测试也没有问题,正常返回抓取数据
无聊试了一下抓取自己的站,服务器 502 了!!!
好吧。和刚才测试比较而言,原来是 curl
在访问 https
协议时报错
定位了错误就好办了,解决一下 curl
没有调用 openssl
的问题就可以了
因为开发机使用的 mac os
,curl
使用包管理 brew
安装的
1 | # 卸载旧版本 curl |
再次测试项目,OK