nginx代理外部api需确保不暴露真实后端、保留可信请求头、限制非法访问、防止信息泄露;须正确配置proxy_pass路径、ip/token鉴权、关键header转发、ssl终止及响应头加固。

把外部合作伙伴的 API 请求通过 Nginx 安全代理进来,核心是:**不暴露真实后端地址、保留可信请求头、限制非法访问、防止信息泄露**。这不是简单加个 proxy_pass 就完事,得兼顾可用性与安全性。
明确代理路径和目标地址
先确定你对外暴露的路径(比如 /partner/v1/),再确认合作方 API 的真实地址(如 https://api.partner.com/v1/)。注意协议、域名、路径层级是否一致:
- 如果后端是 HTTPS,
proxy_pass必须写https://,否则会降级为 HTTP 导致失败 - 路径结尾斜杠很重要:
proxy_pass https://api.partner.com/v1/;(末尾带 /)表示完全替换 location 路径;不带 / 则会拼接原路径 - 建议统一用带尾部斜杠的方式,避免路径错位,比如访问
/partner/v1/users→ 转发到https://api.partner.com/v1/users
强制校验来源与限制访问方式
不能让任何人随意调用这个代理路径。常用手段有三类:
- 基于 IP 白名单:
allow 203.0.113.45;+deny all;放在location块内,只允许可信出口 IP 访问 - 基于请求头鉴权:
if ($http_x_partner_token != "abc123def") { return 403; },要求合作方每次请求带上约定 Header - 禁用非必要 HTTP 方法:
limit_except GET POST { deny all; },防止恶意 OPTIONS、PUT、DELETE 等试探
安全转发关键请求头
合作方调用你的代理接口时,原始客户端信息不能丢,但也不能照单全收。重点设置这些头:
-
proxy_set_header Host $host;—— 传真实请求 Host,便于后端识别租户或路由 -
proxy_set_header X-Real-IP $remote_addr;—— 记录发起请求的真实公网 IP -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;—— 追加 IP 链,不覆盖已有值 -
proxy_set_header X-Forwarded-Proto $scheme;—— 告诉后端当前是 http 还是 https,影响重定向或链接生成 -
不要透传敏感头:如
X-Forwarded-User、Authorization等,除非你明确信任并需要它
启用 SSL 终止与响应加固
如果你的 Nginx 对外是 HTTPS(推荐),就在 server 块里配好证书,并关闭后端明文风险:
- 用
ssl_certificate和ssl_certificate_key启用 TLS - 禁止后端返回危险响应头:
proxy_hide_header Server;、proxy_hide_header X-Powered-By; - 可选加 CORS 头(如果合作方前端直连你这个代理):
add_header 'Access-Control-Allow-Origin' 'https://fe.partner.com';,不要设为*配合 credentials - 超时控制防卡死:
proxy_connect_timeout 5s;、proxy_read_timeout 30s;、proxy_send_timeout 30s;
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











