1. 程式人生 > >curl ip報錯curl: (56) Recv failure: Connection reset by peer

curl ip報錯curl: (56) Recv failure: Connection reset by peer

背景:
 第三方伺服器存在”域名白名單”控制,我這邊提供公網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/; }