curl ip報錯curl: (56) Recv failure: Connection reset by peer
阿新 • • 發佈:2019-01-08
背景:
第三方伺服器存在”域名白名單”控制,我這邊提供公網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/;
}