当前位置: 首页 > news >正文

同一机器下通过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),而你的安全组允许这些端口。

相关文章:

  • 如何查询服务器的端口号
  • Python教程(七)——错误和异常
  • java操作服务器文件(把解析过的文件迁移到历史文件夹地下)
  • Linux中的权限概念
  • CS144 - LAB0
  • LINUX528 重定向
  • 【Linux】分页式存储管理:深刻理解页表映射
  • 具身智能专题(2)-主从臂零位校准及摄像头数据获取与检验
  • ESP8285乐鑫SOCwifi芯片32bit MCU和2.4 GHz Wi-Fi
  • 第11章:工程组织与系列总结
  • 前端EXCEL插件智表ZCELL数据源功能详解
  • 最长公共子序列(LCS)问题——动态规划法
  • 动静态库的制作
  • MYSQL备份恢复知识:第六章:恢复原理
  • 排查Oracle文件打开数过多
  • 万字详解RTR RTSP SDP RTCP
  • 内网穿透系列五:自建SSH隧道实现内网穿透与端口转发,Docker快速部署
  • es6 函数解构
  • 不打架的协议互通,modbus转profibus网关的总线的高效互通方案
  • 通用大数据可视化展示平台模板 – 免费HTML源码
  • 怎么查看网站是否做百度排名/北京seo百科
  • 佛山网站建设公司排名/seo销售好做吗
  • 有口碑的武进网站建设/网络app推广是什么工作
  • 网站ftp密码/最好的bt磁力搜索引擎
  • 网站 虚拟目录/什么平台可以免费发广告
  • 二手优品哪个网站做/手机百度网页版 入口