作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果 nxinx 在负载均衡器后面运行,是否可以强制 nginx $scheme 值为“https”?
在我的场景中,负载均衡器负责与客户端进行 https 通信,并将请求作为原始 http 转发到 nginx。我知道我可以做这样的事情来检测 https
set $my_scheme "http";
if ($http_x_forwarded_proto = "https") {
set $my_scheme "https";
}
但我只是好奇是否有类似于 IP 的 real_ip_header
函数。
手动检测 https 时是否还需要更新一些 header ?
最佳答案
我们的设置与您的相同,只是使用 map
而不是 if/set
(按照 nginx devs 的建议)。
# Sets a $real_scheme variable whose value is the scheme passed by the load
# balancer in X-Forwarded-Proto (if any), defaulting to $scheme.
# Similar to how the HttpRealIp module treats X-Forwarded-For.
map $http_x_forwarded_proto $real_scheme {
default $http_x_forwarded_proto;
'' $scheme;
}
附注我同意,real_scheme
模块会很好!
关于负载均衡器后面的 nginx $scheme 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21230918/
我是一名优秀的程序员,十分优秀!