nginx-从上游服务器读取自定义头

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

我使用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-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
模式记录在这里: