nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头

今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求的是https还是http,我们的proxy服务器收到的都是80端口上的http。于是联系相关部门了解有没有现成的可用的这样一个字段来获得这个值。公司用的也是标准报头,即X-Forwarded-Proto。

X-Forwarded-Proto(XFP)报头是用于识别协议HTTP或HTTPS的,即用户客户端实际连接到代理或负载均衡的标准报头。后端的服务器如果要确定客户端和负载平衡器之间使用的协议,可以使用X-Forwarded-Proto请求标头。nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下使用underscores_in_headers开启header的下划线支持,然后使用proxy_set_header向后端服务器发送字段X-Forwarded-Proto。

bash 复制代码
#proxy_set_header上下文:http, server, location。语法:
proxy_set_header field value;
#默认值:	
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;

#开启header的下划线支持:
underscores_in_headers on;
#设置向后端proxy发送X-Forwarded-Proto字段
proxy_set_header  X-Forwarded-Proto  $http_X_Forwarded_Proto;
proxy_set_header  X-Real-IP  $remote_addr;

在后端的服务器,使用http_X_Forwarded_Proto接收的,也可以使用小写比如http_x_forwarded_proto来接收,前面都需要加上http_。

相关推荐
The Chosen One98511 分钟前
【Linux】Linux权限讲解 :写给文件的一封情书
linux·运维·服务器
德迅云安全杨德俊25 分钟前
HTTPS:现代网站运营的安全基石与价值引擎
网络协议·安全·https
勇往直前plus1 小时前
Docker 拉取镜像:SSL 拦截与国内镜像源失效问题解决
docker·容器·https·ssl
Thexhy2 小时前
在centos 7上配置FIP服务器的详细教程!!!
linux·运维·centos
FJW0208142 小时前
DevOps——CI/CD持续集成与持续交付/部署的理解与部署
运维·ci/cd·devops
Java 码农3 小时前
Linux shell sed 命令基础
linux·运维·服务器
fyakm3 小时前
Linux网络接口配置:静态IP与动态IP设置(附代码示例)
linux·运维·tcp/ip
怀旧,3 小时前
【Linux系统编程】5. 基础开发⼯具(下)
linux·运维·服务器
喵叔哟3 小时前
10. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--Web API 接口与前端集成:部署与生产运维:稳定性、可观测与成本
运维
杰克崔3 小时前
内核里常用宏BUG_ON/WARN_ON/WARN_ONCE
linux·运维·服务器