概述
OTA上传场景,脚本需要使用curl请求服务器的一个接口传递信息.但是在源码服务器上一直卡在请求阶段,本地机器却可以请求成功.
分析解决
背景信息
主机IP信息:
OTA服务器IP地址:x.x.x.1
源码服务器地址:x.x.x.2
本地地址:x.x.y.1
请求:
curl -d "xxxx" 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尝试
本地尝试成功:
正在解析主机 niot.com (niot.com)... x.x.x.1
正在连接 niot.com (niot.com)|x.x.x.1|: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])
源码服务器尝试失败
Resolving niot.com (niot.com)... z.z.z.z
Connecting to niot.com (niot.com)|z.z.z.z|:8091...
但是发现本地和源码服务器解析的IP地址不一样;本地机器解析的是内网地址;而源码服务器解析的是外网地址.
修改hosts
怀疑是该接口无法从外网访问,于是修改hosts文件.
/etc/hosts
增加下面一行
x.x.x.1 niot.com
重新测试发现源码服务器可以访问成功,那就说明确实是外网无法访问该接口.
所以对于具有外网IP的域名,内部访问最好使用内网IP地址解析.
版权声明:本文为m0_37631324原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。