直接在nginx.conf的http块内添加server块即可实现反向代理,无需修改全局配置或默认站点文件;该server块须包含listen、server_name、location及proxy_pass等指令,并通过nginx -t校验后reload生效。

直接在 nginx.conf 的 http 块里加一个 server 块就能实现反向代理,不需要改全局配置,也不用动默认站点文件。
基础 server 块配置(域名或 IP 访问)
比如你想让访问 http://example.com 的请求,全部转发到本机 http://127.0.0.1:8080 的后端服务:
- 打开
/etc/nginx/nginx.conf - 在
http { ... }大括号内部,插入以下内容:
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
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_pass 后面不带路径斜杠(如 /),表示完整路径透传;如果写成 http://127.0.0.1:8080/,则会剥离匹配的 location 前缀。
按路径区分转发(多后端共存)
同一个域名下,不同路径走不同服务,例如 /api/ 转 Node.js,/admin/ 转 Python 后端:
- 在同一个
server块里添加多个location - 每个
location独立设置proxy_pass和必要头信息
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /admin/ {
proxy_pass http://127.0.0.1:5000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
这里两个 proxy_pass 末尾都带 /,这样 /api/users 就会变成 /users 转发给后端,避免路径错位。
转发到 HTTPS 后端或启用 WebSocket
如果后端是 HTTPS 或需要长连接(比如前端用 Socket.IO),得额外加两行:
- HTTPS 后端:把
proxy_pass https://backend.example.com/;,测试时可加proxy_ssl_verify off;(生产环境必须关掉这句,配好证书) - WebSocket 支持:在对应
location里加上:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
配置生效前必须做的三件事
改完 nginx.conf 不代表马上生效:
- 运行
sudo nginx -t检查语法是否正确 - 确认没报错后,执行
sudo systemctl reload nginx(不是 restart) - 如果用了新域名,确保 DNS 已解析到这台 Nginx 服务器的 IP


















