在做公司项目的时候使用了第三方的API接口,且接口采用的是https请求,在本地的wamp集成环境开发测试正常,放到服务器上结果报错 nginx 502 bad gateway。在论坛中爬楼了几天今天终于找到原因,php版本问题;
公司项目线上环境:
服务器安装了wdcp其中nginx是1.4.2版本 php是5.2.17版本
部署项目上去后,怎么运行都报502错,刚开始怀疑是nginx配置问题,百度了许久说请求https需要ssl于是配置了nginx的ssl后问题依旧,无奈只好继续搜索答案。
这是在wdcp论坛找到的php升级5.3脚本:
wget http://down.wdlinux.cn/in/php_up53.sh
sh php_up53.sh
---------------------------------------------
问了找到nginx 502 bad gateway错误,于是乎在本地服务器安装了wdcp进行测试。
1、安装wdcp,创建网站项目;
2、编写测试代码,index.php;
<?php // 初始化一个 cURL 对象 $curl = curl_init(); // 刚开始抓取了https://github.com,但是页面弹框,后来改用抓取支付宝首页测试 curl_setopt($curl, CURLOPT_URL, ‘https://www.alipay.com‘); // 设置header curl_setopt($curl, CURLOPT_HEADER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行cURL,请求网页数据 $data = curl_exec($curl); // 关闭cURL请求 curl_close($curl); // 打印出抓取的测试数据 var_dump($data);
3、浏览器请求页面 www.test.cn (这里www.test.cn是虚拟域名配置hosts来的)结果报错502
4、tail -f /www/wdlinux/nginx/logs/error.log查看请求错误日志,从日志看是上游过早关闭连接。。。。(什么意思)
*59 upstream prematurely closed connection while reading response header from upstream, client: 192.168.0.102, server: test.cn, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:88/", host: "www.test.cn"
5、百度 在wdcp论坛爬楼到一篇帖子,说要升级PHP版本,并提供了升级脚本php_up53.sh于是升级结果就真的就好了。
---------------------------------------
虽然目前好不知道问什么,但是先记录下nginx下的php函数curl请求Https报错502升级php到5.3以上包括5.3即可。