必须设置 proxy_set_header X-Forwarded-Proto $scheme;,因后端需据此生成正确绝对URL、避免混合内容和重定向错误;同时配套设置X-Real-IP、X-Forwarded-For、X-Forwarded-Host和X-Forwarded-Port,并在后端框架中显式信任该头。

在 Nginx 中,若后端服务(如 Node.js、Django、Spring Boot)需要知道前端请求是通过 HTTP 还是 HTTPS 访问的,而 Nginx 作为反向代理处于 HTTPS 终止位置(即客户端 HTTPS → Nginx → 后端 HTTP),则必须显式用 proxy_set_header 将协议信息传递给后端。
为什么要传递来源协议?
后端应用常依赖 X-Forwarded-Proto 或类似字段生成绝对 URL(如重定向地址、API 回调地址、CSRF Token 的域判断)。若不传递,后端可能误认为所有请求都是 HTTP,导致生成 http://example.com/xxx 链接,引发混合内容、跳转失败或安全策略拦截。
正确设置 X-Forwarded-Proto
在 location 或 server 块中添加:
proxy_set_header X-Forwarded-Proto $scheme;
HISUI 前端框架基础开发指南。HISUI 是基于 easyui 二次开发的 jQuery UI 组件库,专为医疗信息系统设计。当涉及 HISUI 组件开发、jQuery easyui 表格/表单/布局/窗口、医疗系统前端页面编写时使用此 skill。 涵盖 40 个组件的官方文档参考,支持声明式与编程式两种初始化方式,提供 $cm/$m 数据访问方法。
其中 $scheme 是 Nginx 内置变量,值为 http 或 https,自动匹配客户端实际使用的协议。这是最推荐、最可靠的方式。
其他相关头部建议一并设置
为保障后端完整识别真实客户端信息,通常配合以下头部:
- 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-Host $host; —— 传递原始 Host,避免后端取到 upstream 地址
- proxy_set_header X-Forwarded-Port $server_port; —— 可选,明确端口(如 443)
后端如何使用该头部?
不同框架处理方式不同,但通用逻辑是:检查 X-Forwarded-Proto 是否为 https,而非只看当前连接协议。例如:
- Express(Node.js):启用
app.set('trust proxy', true)后,req.protocol自动读取该头 - Django:需配置
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') - Spring Boot:设
server.forward-headers-strategy=framework并信任代理
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










