阿里云部署的web微服务,微服务判断用户未登录后自动跳转,发现ip从公网->私网,求解

写了一套OAuth2.0的授权代码,集成了网关gateway,代理了oauth-server这个服务,本地测试的好好的,但是网关和oauth-server上了阿里云出了个奇怪的问题,我本地写了个第三方的web项目,调用部署上去的阿里云授权中心【公网ip】在代理转发oaut-server的请求时,突然就变成了私网ip,导致流程无法进行下去,我贴一下图: 环境介绍:网关-10000端口 oauth-server:8000

1.本地环境向网关发起授权请求 image.png

2.跳转到部署在阿里云ecs服务器的网关->找到授权中心,判断出用户没有登录,于是授权中心自己跳转到自己的登录页,但是ip发生变化【公->私】,导致我本地无法访问 image.png

展开
收起
blue_jack 2021-04-07 10:00:18 1137 分享 版权
阿里云 AI 助理回答

遇到这个问题,很可能是由于阿里云ECS服务器的网络配置或安全策略导致的。在阿里云上部署应用时,需要确保服务间的通信以及对外访问的路径是正确的配置。根据你的描述,问题可能出在以下几个方面:

  1. ECS实例网络类型:首先确认你的ECS实例是使用经典网络还是专有网络(VPC)。如果是专有网络,ECS实例默认配置的是私网IP,需要通过NAT网关、弹性公网IP(EIP)或者负载均衡(SLB)来实现与公网的通信。

  2. 网关转发设置:在阿里云的API Gateway或自建的网关中,确保你正确配置了路由和后端服务地址。如果后端服务(oauth-server)运行在VPC内,且直接使用私网IP进行代理转发,那么外部访问时自然会遇到无法路由的问题。你需要确保网关能够正确地将公网请求转发到VPC内的私有服务。

  3. NAT网关或EIP配置:为了解决VPC内部服务被公网访问的问题,你可以考虑以下方案:

    • 配置NAT网关:允许VPC内的私有IP通过NAT网关转换成公网IP访问外网,但这个方案对于你的场景并不直接适用,因为你是希望从公网访问VPC内的服务。
    • 绑定EIP到ECS:如果你的服务必须直接暴露给公网,可以考虑直接为oauth-server所在的ECS实例绑定一个弹性公网IP。但是,这通常不是最佳实践,特别是当有多台服务器或者需要灵活管理入口流量时。
    • 使用SLB:更推荐的做法是使用负载均衡(SLB),将EIP绑定到SLB上,然后将oauth-server作为SLB的后端服务器。这样不仅可以解决公网访问问题,还能提供负载均衡能力,增强系统的可用性。
  4. 安全组规则:检查ECS实例的安全组规则,确保入方向规则允许来自公网的流量到达oauth-server服务所监听的端口(8000端口)。同时,如果使用了API Gateway或其他网关服务,也要确保其安全组规则正确配置。

  5. VPC端点服务:如果不想直接将服务暴露在公网,也可以考虑使用VPC端点服务(Endpoint Service),它允许VPC内的服务以安全的方式被其他VPC或专有网络连接,但这需要调用方也在阿里云上,并且对架构有一定调整。

综上所述,建议你检查并调整网络配置,比如通过添加SLB并配置相应的安全组规则,使得外部请求能够顺畅地访问到位于VPC内的oauth-server服务。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

为微服务建设降本增效,为微服务落地保驾护航。

还有其他疑问?
咨询AI助理