You need to enable JavaScript to run this app. 如何在Linode Ubuntu20实例的80端口部署并访问Node.js应用
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linode Ubuntu20实例的80端口部署并访问Node.js应用

问题根源
  • Node.js 是运行在3000端口的动态服务,不能通过修改 Nginx 静态资源根目录(root)的方式托管,你当前的配置相当于直接对外暴露项目源码目录,所以访问IP会返回app.js纯文本内容
  • 将 Nginx 运行用户修改为 root 属于高危操作,存在严重安全风险,必须回滚
修复步骤

1. 回滚错误配置

  • 编辑/etc/nginx/nginx.conf,将首行的运行用户改回默认的www-data
  • 编辑/etc/nginx/sites-available/default,清空你之前修改的root路径相关配置,替换为下方的反向代理规则

2. 配置Nginx反向代理

将/etc/nginx/sites-available/default中的server块完整替换为以下内容:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    location / {
        # 将80端口的所有请求转发到本地运行的Node.js服务3000端口
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_cache_bypass $http_upgrade;
    }
}

3. 生效配置

  • 执行nginx -t验证配置语法,返回成功提示后再执行下一步,避免配置错误导致Nginx无法启动
  • 执行systemctl restart nginx重启Nginx使配置生效

4. 配置Node.js进程常驻(可选)

手动执行node app.js的方式在SSH连接断开后会自动停止,推荐使用PM2管理Node进程:

  • 全局安装PM2:npm install pm2 -g
  • 进入项目目录执行:pm2 start app.js
  • 配置开机自启:pm2 startup && pm2 save
验证

确认Node.js应用正常运行的情况下,直接访问服务器IP即可打开你的应用,不会再返回源码内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 02:06:05