我无法访问我想要的第二个端口。因此,以下是我在 ALB 中拥有的侦听器:
- HTTP:80 - 没有安全策略或 SSL 证书,但始终重定向到端口 443
- HTTPS:443 - 它具有 SSL 证书,并且正在转发到指向我的 EC2 实例上的端口 8080 的目标组
- HTTP:8081 - 同样没有任何安全策略,它正在转发到指向同一 EC2 实例的另一个目标组,但指向端口 8081
但是,我的第二个目标组指向端口 8081,显示检查不健康,我不明白为什么。我的声誉不足以提供屏幕截图,但我已在https://stackoverflow.com/questions/75725316/how-to-configure-aws-application-load-balancer-to-point-to-multiple-ports-on-the
我不确定这是什么原因造成的。基本上,我的设置是这样的 - 我在 AWS EC2 实例的端口 8080 上运行 Node.js API,并且我使用 PM2 运行它。但是,配置了一个仅用于开发目的的 API,该 API 当前在端口 8081 上运行,同样使用 PM2。我可以访问端口 8080,但无法访问端口 8081 上的服务器。这是我的安全组 (SG),它只允许从 LB 进行访问:
- SSH TCP 端口 22,源为 0.0.0.0/0
- 针对我授予 80、8080、8081 端口访问权限的实例,为端口 8080 设置自定义 TCP,并将源设置为我的主要 SG
- 端口 8081 的自定义 TCP - 与前一个相同。
我的 PM2 列表包含以下正在运行的服务:
- 应用程序名称,运行于端口 8080
- Dev-app-name,运行于端口 8081
当我对端口 8080 执行 lsof 时,我看到以下内容:
- 命令 | PID | 用户 | FD | 类型 | 设备 | 大小/关闭 | 节点 | 名称
- node\x20/ | 1343 | ubuntu | 19u | IPV6 | 28188 | 0t0 | TCP | *:tproxy (监听)
但是,当我对端口 8081 执行 lsof 命令时,它显示以下内容: 当我对端口 8080 执行 lsof 时,我看到以下内容:
- 命令 | PID | 用户 | FD | 类型 | 设备 | 大小/关闭 | 节点 | 名称
- node\x20/ | 1928 | ubuntu | 19u | IPV6 | 35040 | 0t0 | TCP | *:http-alt (监听)
- node\x20/ | 1928 | ubuntu | 25u | IPV6 | 75722 | 0t0 | TCP | *:ip--eu-central-1-compute.internal:http-alt -> ip--eu-central-1.compute.internal:41706(已建立)
任何答案或建议都将受到赞赏!
答案1
您的进程仅监听 IPv6,但您的安全组没有为 IPv6 开放端口 8081 和 8080,只为 IPv4 开放端口。