基础反向代理只需三步:监听请求、匹配路径、转发后端,核心是proxy_pass指令;需确保后端可达、防火墙放行,并配置server块含listen、server_name和proxy_pass等必要指令,最后通过nginx -t和-s reload验证启用。

直接配置一个基础反向代理,核心就是三件事:监听请求、匹配路径、转发到后端服务地址。不需要复杂逻辑,一条 proxy_pass 就能跑起来。
确认后端服务可访问
确保你要代理的服务已经在内网正常运行,比如:
- 服务地址是
http://192.168.1.50:3000(HTTP)或https://10.0.2.10:8443(HTTPS) - 从 Nginx 所在服务器上能用
curl http://192.168.1.50:3000成功拿到响应 - 防火墙或安全组已放行对应端口(尤其是内网通信端口)
写一个最小可用的 server 块
在 /etc/nginx/conf.d/proxy.conf(或任意 .conf 文件)里写入:
server {
listen 80;
server_name example.local;
location / {
proxy_pass http://192.168.1.50: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;
}
}
-
listen 80表示监听 80 端口;如需 HTTPS,后面再配 443 + SSL 证书 -
server_name是你打算用的域名(比如测试时可配 hosts 指向 Nginx IP) -
proxy_pass后面不能带尾部斜杠(/),否则路径会被截断;如果后端期望路径为/api/xxx,而你只想代理/api/下所有请求,就写成proxy_pass http://.../api/;
验证并启用配置
执行两步检查,避免配置出错导致服务中断:
- 语法检测:
sudo nginx -t—— 显示 “syntax is ok” 和 “test is successful” 才算通过 - 重载生效:
sudo nginx -s reload(不中断已有连接) - 用浏览器或
curl http://example.local测试是否返回后端内容
常见小问题快速排查
如果请求返回 502 或空白页,优先看这几点:
- 后端服务是否真在运行?Nginx 服务器能否 ping 通目标 IP?
-
proxy_pass地址写错(比如少写了http://,或 IP/端口不对) - Nginx 用户(通常是
www-data或nginx)没有网络访问权限(少见,但 SELinux 或某些容器环境会限制) - 后端服务返回了重定向(302),但没带完整 Host,导致跳转失败 —— 此时加
proxy_redirect off;或明确设置重定向规则


















