curl请求失败

概述

OTA上传场景,脚本需要使用curl请求服务器的一个接口传递信息.但是在源码服务器上一直卡在请求阶段,本地机器却可以请求成功.

分析解决

背景信息

主机IP信息:

OTA服务器IP地址:10.10.7.40
源码服务器地址:10.10.7.83
本地地址:10.10.9.68 

请求:

curl -d "newtime=$timestamp&number=$1&md5=$md5"  https://niot.com:8091/api/edition/firmwareedition_add

源码服务器请求

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:25 --:--:-- 0

一直卡在请求,没有响应;但是本地机器请求是成功.

使用wget尝试

本地尝试成功:

--2020-05-22 17:13:20--  https://niot.com:8091/api/edition/firmwareedition_add
正在解析主机 niot.com (niot.com)... 10.10.7.40
正在连接 niot.com (niot.com)|10.10.7.40|:8091... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 45 [application/json]
正在保存至: “firmwareedition_add.1”

firmwareedition_add.1 100%[=======================>]      45  --.-KB/s    用时 0s    

2020-05-22 17:13:20 (9.68 MB/s) - 已保存 “firmwareedition_add.1” [45/45])

源码服务器尝试失败

--2020-05-22 17:29:01--  https://niot.com:8091/api/edition/firmwareedition_add
Resolving niot.com (niot.com)... 218.17.115.123
Connecting to niot.com (niot.com)|218.17.115.123|:8091... 

但是发现本地和源码服务器解析的IP地址不一样;本地机器解析的是内网地址;而源码服务器解析的是外网地址.

修改hosts

怀疑是该接口无法从外网访问,于是修改hosts文件.

/etc/hosts

增加下面一行
10.10.7.40      niot.com

重新测试发现源码服务器可以访问成功,那就说明确实是外网无法访问该接口.

所以对于具有外网IP的域名,内部访问最好使用内网IP地址解析.

你可能感兴趣的:(curl请求失败)