nginx-从上游服务器读取自定义头
我使用nginx作为反向代理,试图从上游服务器(Apache)的响应中读取自定义头,但没有成功。Apache响应如下所示:nginx-从上游服务器读取自定义头,nginx,reverse-proxy,Nginx,Reverse Proxy,我使用nginx作为反向代理,试图从上游服务器(Apache)的响应中读取自定义头,但没有成功。Apache响应如下所示: HTTP/1.0 200 OK Date: Fri, 14 Sep 2012 20:18:29 GMT Server: Apache/2.2.17 (Ubuntu) X-Powered-By: PHP/5.3.5-1ubuntu7.10 Connection: close Content-Type: application/json; charset=UTF-8 My-c
HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1
我想从我的自定义标题中读取值,并在if子句中使用它:
location / {
// ...
// get My-custom-header value here
// ...
}
这可能吗?提前谢谢 $http\u头密钥的名称\u
i、 e如果标题中有origin=domain.com
,则可以使用$http\u origin
获取“domain.com”
在nginx中,确实支持任意请求头字段。在上面的示例中,变量名的最后一部分是转换为小写的字段名,用下划线替换短划线
参考文件如下:
例如,变量为
$http\u my\u custom\u header
使用$http\u my\u custom\u header
你可以写这样的东西
set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}
我也面临同样的问题。我尝试了
$http\u我的自定义\u头
和$sent\u http\u我的自定义\u头
,但对我无效
虽然通过使用
$upstream\u http\u my\u custom\u header
解决了这个问题,但实际上这是错误的,不应该被标记为答案。对于将来遇到这种情况的任何人来说,正确的变量是$http
。以OP为例,$http\u my\u custom\u header
(区分大小写!)我已更正了此答案以与文档匹配;)事实证明,这也不正确。OP要求读取响应标题的值。您应该使用$sent\u http\u my\u custom\u头。如果您需要上游响应标题,请检查下面的@dev gosain answer。答案是错误的。询问者正试图从上游服务器访问标头。正确答案是man说的-变量名的最后一部分是字段名,转换为小写,用下划线替换破折号。您保存了我的一天,谢谢相应的变量$upstream\u http\u name
模式记录在这里: