核心三步:确认Node服务监听正确端口(如127.0.0.1:3000)、配置proxy_pass及必要header转发、执行nginx -t校验后systemctl reload nginx生效。

直接把 Nginx 配置成反向代理,把进来的 HTTP 请求转给本地运行的 Node.js 服务,核心就三步:确认 Node 服务在跑、写对 proxy_pass、重启 Nginx 生效。
确认 Node 服务已监听正确端口
Node.js 应用必须先启动,并绑定到一个明确的端口(比如 3000 或 8081),且监听地址最好是 0.0.0.0 或 127.0.0.1,不能只监听 localhost(某些环境解析可能出问题)。
运行命令示例:PORT=3000 node server.js 或 npm start。
验证方式:curl http://127.0.0.1:3000 能返回响应,说明服务就绪。
配置 Nginx 的 proxy_pass 规则
推荐在 /etc/nginx/conf.d/ 下新建独立配置文件(如 myapp.conf),避免修改主配置。关键点:
- 用
upstream块定义后端(可选,单服务时可省略); -
location /表示所有请求都代理过去;若只想代理/api开头的,写location /api/; -
proxy_pass后面的 URL 末尾加不加/很关键:
—proxy_pass http://127.0.0.1:3000/;→ 请求/api/user转发为http://127.0.0.1:3000/api/user;
—proxy_pass http://127.0.0.1:3000;(无斜杠)→ 请求/api/user转发为http://127.0.0.1:3000/api/user(行为相同);
但若location /api/+proxy_pass http://127.0.0.1:3000/,则会自动剥离/api/前缀; - 务必加上基础 header 转发,否则 Node 里拿不到真实 IP 和协议:
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;
检查并重载配置
写完配置后别急着重启:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 执行
sudo nginx -t检查语法是否正确,提示 “syntax is ok” 和 “test is successful” 才算通过; - 确认无误后,执行
sudo systemctl reload nginx(或sudo service nginx reload)让新配置生效; - 如果访问 80 端口没反应,记得检查防火墙(
ufw或iptables)和云服务器安全组——尤其阿里云/腾讯云,默认不放行非 80/443 端口,但这里只是 Nginx 监听 80,Node 在内网端口(如 3000),所以只需开放 Nginx 监听端口(通常是 80 或 443)即可,Node 端口无需对外暴露。
常见转发场景示例
比如你想把 https://example.com/api 转给 http://127.0.0.1:3000,配置片段如下:
server {
listen 80;
server_name example.com;
<pre class="brush:php;toolbar:false;">location /api/ {
proxy_pass http://127.0.0.1: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;
}
location / {
# 其他静态资源或前端页面
root /var/www/html;
try_files $uri $uri/ /index.html;
}}
这样,/api/users 就会精准转发到 Node 服务的 /users 接口。

















