preface
错误原因: 服务器 nginx设置了白名单问题
最近 ios app 上生产后, 出现了访问服务器 访问失败问题
解决思路 可以有两种:
- 通过抓包看看报错信息
- 看后台服务器 日志, nginx 日志
打算通过抓包看下数据
抓包 test
- ios 下载软件
- wifi 环境下 charles 抓包数据
wifi 下 访问数据没有问题, 但是 ios 开发人员说不能访问
4g 网络测试, 确实不能访问服务器
结论: wifi 可以访问, 4G不能访问
中间查询过 ios 和 安卓访问服务器,是否需要在 服务器上作相应设置, 脑洞打开(ipv4, v6…),查了下没有找到相关
然后 群里 ios 开发人员(外包) 的录屏, wifi 也不能访问
切换网络环境测试
- 把wifi 切换到公司网络的上级网络环境, 依旧可以访问
- 怀疑他那边可能有wifi代理设置问题
- 远程连接自己家里的电脑, postman 模拟网络请求,显示错误如下
- 公司的 postman 请求没有问题
确定是: 服务器设置了白名单问题
原因
项目访问:
云防系统 (nginx) ----> 阿里云部署的项目(nginx + jar)
阿里云上 nginx 设置了 白名单导致了 非白名单上 ip 不能访问服务器
根本错误出在 云防系统这里: 理论上 入口在 云防系统, 阿里云 nginx 白名单仅需要设置 云防系统的 多个i p
但是 云防系统 在转发请求的时候把 请求头数据 修改为 “客户端” 相关数据, 至少 host 修改了,所以 阿里云 nginx 设置的白名单没有通过
解决
- 云防系统修改下 转发数据的请求头(推荐)
- 阿里云 白名单去除
然而, **企 的云防系统,找他们修改东西, 不是一点麻烦,选择了 2。