nginx+php下curl请求https报502错

在做公司项目的时候使用了第三方的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即可。

时间: 2024-10-06 10:24:45

nginx+php下curl请求https报502错的相关文章

curl 请求https内容,返回空

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$api); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//禁止直接显示获取的内容 重要 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // $json = curl_exec($ch);

Nginx环境下http和https可同时访问方法

给nginx配置SSL证书之后,https可以正常访问,http访问显示400错误,nginx的配置如下: server { listen 80 default backlog=2048; listen 443; server_name lvtao.net; root /var/www/html; ssl on; ssl_certificate /usr/local/Tengine/sslcrt/lvtao.net.crt; ssl_certificate_key /usr/local/Teng

记录一次解决httpcline请求https报handshake_failure错误

概述 当使用httpclinet发起https请求时报如下错误: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:1

PHP Curl请求Https接口

在请求http的时候只需要 file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Position");就可以了,但是发现这个接口现在变成了https协议了还用这种方法就会403首先看看PHP有没有curl扩展,我是7.2 我用的是Laravel社区的封装好的方法 public static function curl($url, $params = false, $ispost = 0,

php curl请求https 返回无结果|false|errno:35

1 SSL: certificate subject name 'WMSvc-GWAMSERVER02' does not match target host name 把curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 2 Curl error: SSL certificate problem: self signed certificate in certificat 这个是CURLOPT_SSL_VERIFYHOST 设为1引起,不同版本的l

get_headers()请求https报错解决思路

场景:项目中客户端上传文件到OSS后,返回给服务端一个OSS的文件对象名称.服务端拿到文件对象名称后,需要通过OSSClient生成一个签名url,然后提供下载服务. 下载服务中,拿到URL后要去校验该url是否有效,于是使用get_headers()去校验该文件url是否能正确响应.如下: $fileUrl='https://cdn.segmentfault.com/v-5c8b4d77/global/img/touch-icon.png'; get_headers($fileUrl, 1);

服务器http请求https服务时报错解决方案

问题一. 问题二. java.security.KeyException 解决: Java.security.KeyException的解决 程序调用环信的接口时,出现此异常. 环境:centos ,openjdk 7,tomcat 原因:open jdk引起,换成sun jdk即可 如果以上还不可以,请升级下nss Java项目在本机运行正常,部署到Linux服务器报Java.security.ProviderException的错误. 升级更新nss之后即可解决: yum upgrade n

php使用curl扩展请求HTTPS链接报sslv3 alert 错误

报错信息 使用php的curl请求https链接时报"error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure" 错误 原因分析 使用php的curl扩展时,curl_setop的CURLOPT_SSLVERSION取值为3,对应协议为ssl v3,因为之前的POODLE 病毒爆发,许多网站禁用了sslv3(nginx默认是禁用的,ssl_protocols 默认值为TLSv1 TLSv1.1 T

nginx php-fpm unixsocket并发100以上报502解决方法

nginx php-fpm用unix socket方式,当并发达到100以上是,会报502错,改成tcp方式就无此问题 本来用unix socket是为了提高性能,却不支持大并发,经查发现是系统内核限制导致不稳定,修改下列内核参数解决 调整以下参数 sysctl.conf net.unix.max_dgram_qlen = 4096 net.core.netdev_max_backlog = 4096 net.core.somaxconn = 4096 php-fpm.conf listen.b