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

如何使用Nginx或AWS负载均衡器为AWS EC2实例上的NodeJS应用多端口配置HTTPS

解决EC2 NodeJS应用多端口HTTPS配置问题

嘿,我来帮你搞定这个多端口HTTPS配置的问题!下面给你两种实用方案,你可以根据自己的场景选——一种是用Nginx反向代理(适合单EC2实例的情况),另一种是用AWS负载均衡器(适合需要弹性扩展的场景)。

方案一:Nginx反向代理(单实例首选)

这个方案成本低,配置起来也快,适合只有一台EC2实例的场景。

前置准备

  • 你的域名已经解析到EC2实例的公网IP
  • 已经拿到SSL证书(推荐用Let's Encrypt免费证书,或者你自己购买的证书)
  • EC2安全组已经开放3000、1337、8080、443端口的TCP入站流量

步骤1:安装Nginx

根据你的EC2实例系统类型执行命令:

  • Ubuntu/Debian系统:
    sudo apt update && sudo apt install nginx -y
    
  • CentOS/RHEL系统:
    sudo yum install nginx -y
    

步骤2:配置SSL证书

如果用Let's Encrypt,直接用certbot工具生成证书:

sudo apt install certbot python3-certbot-nginx -y # Ubuntu/Debian
# CentOS需先装epel源:sudo yum install epel-release -y,再安装certbot
sudo certbot certonly --nginx -d yourdomainname.com

执行完后,证书会存在/etc/letsencrypt/live/yourdomainname.com/目录下。

步骤3:配置Nginx多端口HTTPS

编辑Nginx配置文件,比如新建一个站点配置:

sudo nano /etc/nginx/sites-available/yourdomain.conf

粘贴以下配置(记得替换成你的域名和证书路径):

# 配置3000端口的HTTPS
server {
    listen 3000 ssl;
    server_name yourdomainname.com;

    ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem;

    # 反向代理到NodeJS的3000端口服务
    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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 配置1337端口的HTTPS
server {
    listen 1337 ssl;
    server_name yourdomainname.com;

    ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem;

    location / {
        proxy_pass http://localhost:1337/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 配置8080端口的HTTPS
server {
    listen 8080 ssl;
    server_name yourdomainname.com;

    ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 可选:把HTTP请求自动重定向到HTTPS
server {
    listen 80;
    server_name yourdomainname.com;
    return 301 https://$server_name$request_uri;
}

步骤4:启用配置并重启Nginx

先检查配置是否有误:

sudo nginx -t

如果提示test is successful,就重启Nginx:

sudo systemctl restart nginx

现在你就可以通过https://yourdomainname.com:3000、https://yourdomainname.com:1337、https://yourdomainname.com:8080访问对应服务了!


方案二:AWS应用负载均衡器(ALB,多实例/弹性场景首选)

如果你的服务需要后续扩展多台EC2实例,或者想让AWS帮你管理SSL证书和流量分发,ALB是更好的选择。

前置准备

  • 你的域名已经解析到即将创建的ALB(可以先创建ALB再改解析)
  • 在AWS ACM(证书管理器)中申请了SSL证书(必须和ALB在同一区域)
  • EC2实例的安全组允许ALB的安全组访问3000、1337、8080端口

步骤1:创建目标组

每个NodeJS服务端口对应一个目标组:

  1. 登录AWS控制台,进入EC2服务,找到目标组,点击创建目标组
  2. 选择实例类型,协议选HTTP,端口填3000,下一步
  3. 选择你的EC2实例,注册进去,创建目标组(命名为target-group-3000)
  4. 重复以上步骤,分别创建端口1337的target-group-1337和8080的target-group-8080

步骤2:创建应用负载均衡器

  1. 进入EC2服务的负载均衡器页面,点击创建负载均衡器,选择应用负载均衡器
  2. 配置基本信息:命名,选择公网访问,选择EC2实例所在的VPC和可用区
  3. 配置安全组:创建一个新的安全组,开放3000、1337、8080、443端口的HTTPS(TCP)入站流量
  4. 配置监听:
    • 添加第一个监听:端口3000,协议HTTPS,选择你在ACM申请的证书,默认转发到target-group-3000
    • 添加第二个监听:端口1337,协议HTTPS,选择同一证书,默认转发到target-group-1337
    • 添加第三个监听:端口8080,协议HTTPS,选择同一证书,默认转发到target-group-8080
    • (可选)添加443端口的HTTPS监听,用路径规则转发到不同目标组,比如/service1转发到3000,这样可以不用带端口访问
  5. 完成创建,等待ALB状态变为活跃

步骤3:更新域名解析

把你的域名解析到ALB的DNS名称(在ALB详情页可以找到)

现在你就可以通过https://yourdomainname.com:3000等地址访问服务了,而且后续添加EC2实例到目标组就能自动扩展!


两种方案对比

方案优点缺点
Nginx反向代理成本低,配置简单,适合单实例需要自己维护Nginx和证书续期,扩展性差
AWS ALB弹性扩展,AWS管理证书自动续期,高可用有额外的负载均衡器费用,配置步骤稍多

内容的提问来源于stack exchange,提问作者syed monzurul ahsan AYON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:54:08