nginx-读取客户端上设置的自定义标头

时间:2018-06-25 19:47:48

标签: nginx http-headers

我正在使用nginx作为反向代理。我正在尝试读取客户端上设置的自定义标头,因此可以使用该标头的值更新变量。

我在XHR请求中设置标头,类似于 xhr.setRequestHeader('X-My-Custom-Variable',“ 1”); xhr.setRequestHeader('X-My-Second-Custom-Variable','some-value');

从文档中,我看到我可以使用以下方法在nginx上实现此目标:

if ($http_x_my_custom_variable = ‘1’) {
    set $variable $http_x_my_second_custom_variable;
}

但是,这在我运行时不起作用,未设置$ variable。

我也尝试过使用nginx map关键字,如下所示:

map $http_x_my_custom_variable $variable {
   default “”;
   “1” $http_x_my_second_custom_variable;
}

仍然没有任何反应。

我还确认了两个标头均设置为后端Django服务器上的期望值。

注意:我的实际标头名称更像是:X-ABM-ZHR-XAVIER。我只是说这是为了防止它与标题名称的结构有关。尽管我也尝试过不同的标头名称排列,以防万一。

1 个答案:

答案 0 :(得分:0)

尝试在变量名称中不要使用任何破折号。

从客户端传递XMyCustomVariable,然后在nginx上使用$ http_XMyCustomVariable(或小写字母)读取它。

我知道这并不优雅,但是作为调试的第一步,我将确认这一部分。

此外,请尝试使用已知变量名之一(再次用于调试),例如在用户代理标头中发送变量1值,并使用$ http_user_agent

检查nginx