Node.js 应用在 Linux 服务器上直接对外监听端口并不少见,但真到生产环境,通常还是要在前面加一层 Nginx 来做反向代理。这样既方便统一接入 80/443 端口,也更利于后续继续接 HTTPS、缓存策略或负载均衡。
这篇文章按实际部署顺序,把安装、配置文件写法、启用站点、语法检查和防火墙放行逐步拆开。你可以跟着命令直接操作,也能顺手核对每一步的作用,避免卡在“服务明明启动了但浏览器就是打不开”这类常见问题上。
安装 Nginx
第一步是确认服务器已经安装 Nginx。不同 Linux 发行版使用的包管理器不同,但命令差异不大。
Debian / Ubuntu 系统
sudo apt update
sudo apt install nginx
CentOS / Red Hat 系统
如果是 CentOS 这类 Red Hat 系发行版,先安装 EPEL 源,再安装 Nginx:
sudo yum install epel-release
sudo yum install nginx
启动服务并设置开机自启
安装完成后,先把 Nginx 服务启动起来,同时设置为开机自动启动。这一步是基础操作,但也经常被漏掉。
sudo systemctl start nginx
sudo systemctl enable nginx
执行完之后,Nginx 就已经在系统中作为服务运行,接下来可以开始配置反向代理。
编写 Node.js 反向代理配置
真正关键的部分,是让 Nginx 把外部请求转发到你的 Node.js 应用。默认配置文件通常位于 /etc/nginx/nginx.conf,或者使用站点目录结构时放在 /etc/nginx/sites-available/default。

更推荐的做法,是为当前项目单独新建一个配置文件,后续维护会更清晰:
sudo nano /etc/nginx/sites-available/your-nodejs-app
写入下面这段配置,注意替换域名和端口:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或公网 IP
location / {
proxy_pass http://localhost:3000; # 替换为你的 Node.js 应用地址和端口
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;
}
}
这段配置的重点是什么
listen 80; 表示 Nginx 监听 HTTP 默认端口,server_name 用来匹配访问时使用的域名或公网 IP。
location / 中的 proxy_pass http://localhost:3000; 则是把请求转发到本机的 Node.js 服务,前提是你的应用确实运行在 3000 端口。如果应用实际监听的是别的端口,这里必须同步修改。
后面的几行 proxy_set_header 配置,主要用于保留请求头信息,并处理升级连接等场景。对于常规 Node.js Web 项目,这一组写法很常见,通常可以直接沿用。
启用站点配置
在很多 Debian / Ubuntu 风格的 Nginx 部署方式中,真正生效的是 sites-enabled 目录下的文件。因此,创建完配置文件后,还需要把它链接到该目录中:

sudo ln -s /etc/nginx/sites-available/your-nodejs-app /etc/nginx/sites-enabled/
这一步完成后,Nginx 才会在重新加载配置时读取你的新站点设置。
检查配置并重新加载 Nginx
不要直接重载服务,先做一次语法检查更稳妥。很多部署问题,其实都能在这一步提前发现。
sudo nginx -t
如果输出提示语法正确,再执行重载:
sudo systemctl reload nginx
这样可以在不中断服务的前提下,让新配置立即生效。
放行 HTTP/HTTPS 端口
如果前面的步骤都没问题,但浏览器仍然无法访问,另一个高频原因就是防火墙没有放行 80 和 443 端口。
使用 ufw 时,可以直接执行:
sudo ufw allow 'Nginx Full'
这条规则会同时放行 HTTP 和 HTTPS 流量,也就是 80 和 443 端口。
访问验证与常见排查项
完成以上步骤后,就可以在浏览器中输入你的域名或公网 IP 进行访问。正常情况下,页面应该会显示 Node.js 应用返回的内容。
如果访问没有成功,优先检查下面几项:
- Node.js 服务是否已经正常运行。
- Nginx 配置中的
proxy_pass端口是否与实际监听端口一致。 server_name中填写的域名或公网 IP 是否正确。- 防火墙是否已经放行 80 / 443 端口。
只要这几个关键点没有配错,大多数基础反向代理场景都能顺利跑通。
完成基础代理后还能继续做什么
到这里,Nginx 已经可以为 Node.js 项目提供基础的反向代理能力。后续如果要进一步用于生产环境,还可以继续补上 HTTPS、缓存策略、访问控制或负载均衡等配置。
换句话说,这篇文章解决的是“先把服务稳定挂起来”的第一步;当这一步跑通后,后面的优化基本都可以在现有配置上逐步叠加。









