You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS负载均衡器端口转发失效?求正确配置方案

解决AWS EC2 Node服务隐藏端口号的问题

一、负载均衡器(ALB)正确配置步骤

你之前的核心错误是目标组端口配置错误,以下是正确流程:

  1. 负载均衡器监听器设置

    • 选用应用负载均衡器(ALB),创建监听器时选择HTTP协议、端口80,默认动作设置为「转发到目标组」。
  2. 目标组配置

    • 目标组协议选HTTP,端口直接设为3000(你的Node服务监听的端口),不要设为80。
    • 目标类型选「实例」,添加你的EC2实例,确保实例状态为「健康」。
    • 健康检查配置:路径改为你的服务可访问路径(比如/),端口选择「目标端口」(即3000),响应码范围设为200-399。
  3. 域名解析
    将你的域名(如example.com)解析到ALB的DNS名称(在ALB控制台「描述」标签下可获取)。

二、关键检查项

  • EC2安全组:必须允许ALB的安全组访问3000端口(ALB要转发流量到EC2的3000端口)。
  • ALB安全组:允许0.0.0.0/0访问80端口。
  • Node服务监听地址:确保服务监听0.0.0.0:3000而非127.0.0.1,可通过命令netstat -tulpn | grep 3000验证。

三、其他替代方案(无需负载均衡器)

1. Nginx反向代理(适合单实例场景)

  • 安装Nginx:
    Amazon Linux系统:sudo yum install nginx -y
    Ubuntu系统:sudo apt install nginx -y
  • 编辑配置文件(如/etc/nginx/conf.d/node.conf),添加以下内容:
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 重启Nginx:sudo systemctl restart nginx
  • 确保EC2安全组允许80端口访问。

2. iptables端口转发(轻量级方案)

  • 执行命令将80端口流量转发到3000:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
  • 保存规则防止重启失效:
    Amazon Linux:sudo service iptables save
    Ubuntu:sudo iptables-save > /etc/iptables/rules.v4
  • 注意:如果80端口被其他进程占用,先通过sudo lsof -i :80排查并停止占用进程。

内容的提问来源于stack exchange,提问作者Ned Madigan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:24:18