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

在AWS上如何通过Nginx反向代理运行使用EJS模板的Node应用?

修复步骤

1. 修复Node服务监听配置

你的server.js中host参数多了无效的末尾斜杠,会导致监听异常,修改为如下内容:

const app = require('./app');
const port = 3001;
// 去掉host末尾的斜杠,也可以直接省略host参数,默认会监听所有可用地址
const host = 'localhost'

const server = app.listen(port, host, () => {
    console.log(`Node server listening to ${server.address().port}`);
})

修改完成后重启PM2服务生效:
pm2 restart all

2. 修复Nginx配置问题

EJS视图由Node服务动态渲染,不需要Nginx直接读取视图文件,你配置中的root、index字段完全冗余,且~路径Nginx服务无法识别(Nginx运行用户无权限访问你的个人家目录),另外Nginx默认的欢迎页配置优先级更高,会覆盖你的站点配置。
具体修改操作:

  • 编辑/etc/nginx/sites-available/default,替换为以下配置:
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _; # 若你有绑定域名,可替换为你的域名

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  • 删掉Nginx默认的欢迎页配置,避免优先级冲突:
    sudo rm -f /etc/nginx/conf.d/default.conf
  • 把你之前修改的/etc/nginx/nginx.conf中的root配置改回默认值/usr/share/nginx/html,避免全局配置冲突
  • 测试Nginx配置语法是否正确:
    sudo nginx -t
  • 若返回测试成功,重载Nginx配置生效:
    sudo systemctl reload nginx

3. 异常排查

如果修改后仍无法访问,执行以下操作确认:

  • 执行netstat -tlnp | grep 3001,确认3001端口确实有Node进程在监听
  • 检查EC2实例安全组的入站规则,确认已开放80端口的公网访问权限
  • 执行ls /etc/nginx/sites-enabled/,确认该目录下没有其他多余的配置文件,避免冲突

内容的提问来源于stack exchange,提问作者David Johns

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:04