同一机器下通过HTTP域名访问其他服务器进程返回504问题记录

我这边项目的服务器有好几个类型节点,每个节点为一个进程,不同节点间通过HTTP来通讯,当前这几个类型的节点都部署在同一台机器上,然后我再测试某个节点到另一个节点的http通讯时,发现一个奇怪的现象:

  1. 我先通过"http://127.0.0.1:8888"这种方式去访问另一个节点的话,没有问题。

  2. 我再把ip改为了"域名"(比如域名为:abc.efg.com), 域名是通过负载均衡和这台机器做了关联,通过"https://abc.efg.com"去访问就一直给我返回状态码"504"(gateway time-out),然后我在其他机器上去访问"https://abc.efg.com"(curl -X POST https://abc.efg.com)就没有问题。

后面想到会不会是安全组的"入站规则"那边没有开放端口导致的?于是把"8888"端口也加进去了,再回到问题机器上通过域名访问就没问题了。

根本原因分析​

​(1) 负载均衡(LB)的流量路径​
  • ​当通过域名 abc.efg.com 访问时​
    • 流量路径:客户端 → 负载均衡(LB)→ 后端服务器(你的机器)。
    • LB 需要将请求转发到后端服务器的 8888 端口。
  • ​安全组的作用​
    • 安全组控制的是 ​后端服务器(你的机器)的入站流量​
    • ​未开放 8888 时​
      • ​外部机器​:LB 的 IP 不在安全组限制范围内(LB 通常有独立 IP 白名单),流量可以到达你的机器。
      • ​本地机器​ :通过 LB 访问时,LB 会将流量 ​回源到同一台机器​ ,此时触发了安全组规则,丢弃了 8888 端口的入站流量。
    • ​开放 8888 后​:本地回源流量被允许,问题解决。
​(2) 为什么 127.0.0.1 不受影响?​
  • 127.0.0.1​本地回环地址​,完全绕过网络栈和安全组,直接由内核处理,因此不受安全组限制。
​(3) 为什么外部机器通过 LB 能访问?​
  • 外部机器的请求经过 LB 后,LB 可能使用 ​内网 IP​​非 8888 端口​ 转发到你的机器(例如 LB 到后端默认走 80/443),而你的安全组允许这些端口。
相关推荐
wanhengidc6 小时前
私有云的作用都有哪些?
运维·服务器·网络·游戏·智能手机
花阴偷移6 小时前
Ubuntu 22.04版本下配置静态IP
linux·运维·服务器·tcp/ip·ubuntu
隔窗听雨眠6 小时前
doctype、charset、meta如何控制整个渲染流水线
java·服务器·前端
tedcloud1237 小时前
TradingAgents部署教程:打造AI量化分析工作流
服务器·前端·人工智能·系统架构·edge
樱桃花下的小猫8 小时前
森林 — 开发者控制台指令与物品ID速查手册
服务器·森林·云鸢互联·零门槛一键搭建·新手友好无技术门槛要求·森林游戏服务器·森林低延迟稳定服务器
霞姐聊IT8 小时前
SR-IOV、MR-IOV 与 SIOV:PCIe虚拟化技术的过去、现在与未来
linux·服务器·虚拟化·pcie
tedcloud1239 小时前
hello-agents部署教程:从零学习AI Agent开发
服务器·人工智能·学习·自动化·powerpoint
qq_265153379 小时前
Redis在游戏服务器中怎么实现开合服数据同步?
服务器·redis·游戏·游戏服务器
szxinmai主板定制专家9 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发