curl ip报错curl: (56) Recv failure: Connection reset by peer

背景:
 第三方服务器存在”域名白名单”控制,我这边提供公网ip给对方,加好后,curl 对方的接口,出现 curl: (56) Recv failure: Connection reset by peer telnet 通,ping不通
curl ip报错curl: (56) Recv failure: Connection reset by peer_第1张图片

ping telnet的区别
 ping: 用来检查网络是否通畅或网络连接速度(Ping域名可以得出解析IP)
 telnet: 用来检查指定ip是否开放指定端口的
说明:
Ping不通并不一定代表网络不通。ping是基于ICMP协议的命令,就是你发出去一个数据包,对方收到后返给你一个!就好比声纳。这个协议是可以禁止的!禁止后,如果你ping对方,对方收到后就不回馈给你,这样你就显示无法ping通,但实际你们还是连着的!telnet是登陆服务器的!服务没禁止就能登陆

解决方式:
 1、通过php curl形式去访问,验证可以正常返回结果


    $url= "http://XX.XXX.XX/MMMM";
    //创建一个新curl资源
    $curl = curl_init();
    // 设置URL和相应的选项
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //curl 返回的内容作为变量储存,而不是直接输出
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    //false 表示不检查证书
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    // 抓取URL并把它传递给浏览器
    $data = curl_exec($curl);
    // 关闭cURL资源,并且释放系统资源
    curl_close($curl);
    print_r($data);

   2、配置nginx代理

location /xn/ {
   proxy_set_header Host testapi.XXX.com;
   proxy_pass  http://testapi.XXX.com/;
}

你可能感兴趣的:(php)