如何在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
相关产品推荐
相关产品推荐

