Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx-访问Http自定义头v2_Http_Nginx_Http Headers - Fatal编程技术网

Nginx-访问Http自定义头v2

Nginx-访问Http自定义头v2,http,nginx,http-headers,Http,Nginx,Http Headers,与此类似,我有一个客户端(bazel)正在向nginx发送请求 客户端正在向每个请求添加一个名为build\u id的自定义头作为HTTP\u build\u id 我只想从nginx 我编写了一个小型pythonflask应用程序,并打印了所有的标题,它表明HTTP\u BUILD\u ID确实是请求的一部分 不幸的是,nginx找不到它。这就是我的日志格式,添加了$http\u build\u id log\u format main'$remote\u addr-$upstream\u c

与此类似,我有一个客户端(bazel)正在向nginx发送请求

客户端正在向每个请求添加一个名为
build\u id
的自定义头作为
HTTP\u build\u id

我只想从
nginx

我编写了一个小型python
flask
应用程序,并打印了所有的标题,它表明
HTTP\u BUILD\u ID
确实是请求的一部分

不幸的是,
nginx
找不到它。这就是我的日志格式,添加了
$http\u build\u id

log\u format main'$remote\u addr-$upstream\u cache\u status[$time\u local]
“$request”$status$body\u bytes\u sent”
“[$http\u build\u id]”
“$http_referer”“$http_user_agent””;

如果您以
HTTP\u BUILD\u ID
的形式发送,则应在日志格式中使用
“$HTTP\u HTTP\u BUILD\u ID”

另外,请检查虚拟主机(服务器)定义,以确保它使用的是
main
格式。一些默认安装如下所示:
access\u log FILE composed
,其中
composed
是预定义的格式。了解更多关于这方面的信息


正如OP所指出的,安装包指向一些无效的头。添加
在上的\u标题中加下划线修复了该问题。

标题HTTP\u USER\u AGENT显示为$HTTP\u USER\u AGENT。而HTTP_REFERER被视为$HTTP_REFERER。我假设HTTP\u BUILD\u ID将被视为$HTTP\u BUILD\u ID。要记录它,它是http\u x\u forwarded\u for
。用户代理、参考者,这些在浏览器发送时不以HTTP作为前缀。在nginx中,要获取头,需要执行
http\u头
。在你的例子中,因为你的头是
HTTP\u BUILD\u ID
,所以你的答案是半正确的。我使用了
$http\u build\u id
,但我需要修复一些配置。请更新您的答案。我过去常常回显我的请求,然后意识到它说我的头无效。然后我在上的标题中添加了
下划线
来解决问题。@GGhe,谢谢,已更新。我会用它在我这边做一个重新测试。谢谢你深入了解这件事!