背景:
第三方服务器存在”域名白名单”控制,我这边提供公网ip给对方,加好后,curl 对方的接口,出现 curl: (56) Recv failure: Connection reset by peer telnet 通,ping不通
ping telnet的区别
ping: 用来检查网络是否通畅或网络连接速度(Ping域名可以得出解析IP)
telnet: 用来检查指定ip是否开放指定端口的
说明:
Ping不通并不一定代表网络不通。ping是基于ICMP协议的命令,就是你发出去一个数据包,对方收到后返给你一个!就好比声纳。这个协议是可以禁止的!禁止后,如果你ping对方,对方收到后就不回馈给你,这样你就显示无法ping通,但实际你们还是连着的!telnet是登陆服务器的!服务没禁止就能登陆
解决方式:
1、通过php curl形式去访问,验证可以正常返回结果
<?php
$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/;
}