Nginx-访问Http自定义头v2
与此类似,我有一个客户端(bazel)正在向nginx发送请求 客户端正在向每个请求添加一个名为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
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 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,谢谢,已更新。我会用它在我这边做一个重新测试。谢谢你深入了解这件事!