对于测试开发而言,Nginx 从来不是运维人员的专属领地,而是我们手里最趁手的调试工具。它不像复杂的运维架构那样需要深究底层原理,它的价值在于解决我们日常工作中最头疼的问题:前后端联调跨域、测试环境接口不通、502/504 报错定位、日志里捞不出有用信息。下面这些内容,全是测试开发在真实项目里踩坑总结出来的实战经验,没有晦涩的理论,只有能直接落地的配置和命令。
一、从0到1:反向代理打通接口调试的完整链路
很多测试开发在本地联调时,前端跑在 3000 端口,后端跑在 8000 端口,前端请求后端接口直接报跨域错误,或者在测试环境部署后,接口请求全部 502。这些问题的根源都是请求路径没有打通,而 Nginx 反向代理就是解决这个问题的唯一正解。下面用一个真实的电商测试平台联调场景,从配置到验证,完整走一遍。
1. 真实场景还原
我们的电商测试平台,Vue 前端运行在 localhost:3000,Python 后端 API 运行在 localhost:8000,前端请求后端订单接口的路径是 /api/v1/orders。直接在前端请求 http://localhost:3000/api/v1/orders,浏览器会报跨域错误;如果在测试环境部署,前端访问 http://test.example.com/api/v1/orders,请求会直接打到 Nginx 的 80 端口,但后端服务在 8000 端口,请求无法到达后端,返回 502。
2. 核心配置详解
在 /etc/nginx/conf.d/ 目录下创建 test-platform.conf 文件,写入以下配置,这是测试开发最常用的反向代理模板:
server {
listen 80;
server_name test.example.com;
# 前端静态资源代理
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
}
# 后端API接口代理
location /api/ {
proxy_pass http://127.0.0.1:8000/api/;
proxy_http_version 1.1;
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;
# 接口调试关键:设置合理超时,避免504错误
proxy_connect_timeout 5s;
proxy_read_timeout 30s;
proxy_send_timeout 30s;
}
}
3. 配置生效与验证
修改配置后,严禁直接重启服务,必须遵循“检查-重载”的黄金流程,这是测试开发必须养成的习惯:
# 第一步:检查配置语法,避免错误导致服务宕机
sudo nginx -t
# 第二步:确认语法无误后,平滑重载配置,不中断现有连接
sudo systemctl reload nginx
验证代理是否生效,使用 curl 命令模拟请求,这是测试开发最常用的验证方式:
# 测试前端页面是否正常代理
curl -I http://test.example.com
# 测试后端接口是否正常代理,检查响应头中的Server字段是否为Python后端标识
curl -I http://test.example.com/api/v1/orders
# 验证请求头是否正确传递,检查X-Real-IP是否为你的真实IP
curl -H "Host: test.example.com" http://服务器IP/api/v1/orders -v
若返回 200 状态码且响应头符合预期,说明反向代理配置成功。此时前端请求 http://test.example.com/api/v1/orders 将被自动转发到 http://127.0.0.1:8000/api/v1/orders,彻底解决跨域和端口不一致问题。


闽公网安备 35020602001684号