proxy_pass末尾斜杠决定路径处理方式:带/则替换location前缀,不带则原样拼接完整URI;必须配合proxy_set_header Host $host、X-Real-IP $remote_addr、X-Forwarded-For $proxy_add_x_forwarded_for等头传递真实信息,否则后端无法正确路由、鉴权或记录日志。

只写 proxy_pass 几乎必然出问题——漏掉 proxy_set_header 会导致后端收不到真实 Host 和客户端 IP,常见报错如 502、400 或日志里全是 127.0.0.1。
proxy_pass 后必须加哪几行 header
后端服务(比如 Node.js、Django、Spring Boot)依赖这些头做路由判断、日志记录和鉴权。Nginx 默认会清空或覆盖它们,不显式设置就丢数据。
-
proxy_set_header Host $host;:保留原始域名,否则后端req.hostname变成127.0.0.1,HTTPS 跳转可能降级为 HTTP -
proxy_set_header X-Real-IP $remote_addr;:传递真实客户端 IP,避免所有日志来源都是本机 -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:兼容多层代理(比如前端还有 CDN),比直接用$remote_addr更可靠 - 如果后端要做协议判断(如重定向逻辑),再加
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass 末尾斜杠决定路径是否被剥离
这个细节 90% 的人踩过坑。斜杠位置直接影响后端收到的 URI 路径。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 配置
location /api/ { proxy_pass http://127.0.0.1:3000/; }→ 请求/api/users转发为http://127.0.0.1:3000/users(/api/被去掉) - 配置
location /api/ { proxy_pass http://127.0.0.1:3000; }→ 请求/api/users转发为http://127.0.0.1:3000/api/users(完整透传,后端若没注册/api/users路由就会 404) - 简单记法:
proxy_pass末尾有/→ 前缀被剥离;无/→ 完整路径透传
502 Bad Gateway 别急着查跨域,先确认三件事
502 是 Nginx 连不上后端,和 CORS 无关。常见原因不是配置写错,而是运行时连通性问题。
- 用
curl -v http://127.0.0.1:3000/health直连后端,确认服务真在跑、端口真开着 - 看 Nginx 错误日志:
tail -f /var/log/nginx/error.log,典型报错是connect() failed (111: Connection refused) - 检查 SELinux 是否拦截:
getenforce返回Enforcing就临时关掉测试:setenforce 0 - 防火墙是否放行本地回环通信?
ufw status或firewall-cmd --list-all查 3000 端口
真正容易被忽略的是:后端监听地址不能只写 localhost,得用 127.0.0.1 或 0.0.0.0;另外 proxy_pass 地址必须带协议(http:// 或 https://),漏了就直接 502。

















