nginx - 上游标头的 nginx 映射变为默认值
问题描述
我想有一个基于我想从上游获取的标头的条件标头。出于某种原因,它总是被翻译为默认值。
配置:上游服务决定是否应该存在名为 x-no-iframe-protection 的标头。
主要的 nginx:
map $http_x_no_iframe_protection $x_frame_options {
yes "";
default "SAMEORIGIN";
}
server {
...
add_header X-Frame-Options $x_frame_options;
...
}
无论我尝试什么 - 我都会得到两个标题:
$ curl -v myhost
...
< x-no-iframe-protection: yes
< x-frame-options: SAMEORIGIN
...
只是为了澄清-我使用 x-no-iframe-protection 作为在特定情况下删除 x-frame-options 的技巧。我可以保留它(尽管一旦被 nginx 解析就不需要它)
无论如何 - 我怎样才能让它被抓住以替换标题值?
解决方案
HTTP 事务包含请求标头和响应标头。从您的问题的上下文中,您正在根据另一个响应标头的值(从上游接收)设置响应标头的值。
Nginx 将请求标头存储在名称以开头的变量中,$http_
并将响应标头存储在名称以开头的变量中$sent_
。
此外,从上游接收到的响应头也可以存储在名称以开头的变量中$upstream_http_
。
在您的配置中,您使用变量$http_x_no_iframe_protection
,而您应该使用其中之一$sent_x_no_iframe_protection
或可能$upstream_http_x_no_iframe_protection
。
所有 Nginx 变量都记录在这里。
推荐阅读
- azure - Azure VM 带宽限制
- android - android rxjava2 zip 可变参数参数
- java - Tomcat 找不到 Web 服务 404
- javascript - 我正在尝试调度一个操作,但收到此错误:“未处理的拒绝(TypeError):无法读取未定义的属性'类型'”
- bash - Bash 解析大型日志文件
- r - 你如何在 R 中对因子水平进行分组?
- c++ - 字符串变量顺序
- wordpress - 浏览器尝试访问 HTTPS 版本而不是 HTTP - WordPress
- c# - C#:如何在不指定泛型类型的情况下在泛型类中调用非泛型静态方法?
- csv - csv 文件(进纸器)中的加特林和变体