【发布时间】:2017-04-20 07:46:15
【问题描述】:
一些消息总线和 Java 应用程序在其 HTTP 请求中添加请求标头,其中包含哈希。示例:
Vendor-User-Property-#BMC: 1234
似乎 NGINX 没有将此标头与 proxy_pass 请求一起传递。我试图重写那个标题:
proxy_set_header Vendor-User-Property-BMC "$http_vendor_user_property_#bmc";
但不幸的是,这不是一个有效的变量,它只是添加了字符串值#bmc。
有没有一种方法可以传递那些未经 proxy_pass 修改的标头,或者以任何方式获取这些标头的值?
用于测试的 curl 命令:
curl -H "Vendor-User-Property-#BMC: 123" http://domain.tld
【问题讨论】:
-
我实际上不得不检查 RFC 以查看是否允许在标头名称字段中使用 #。原来是这样。至于您的实际问题:您可以尝试使用
${http_vendor_user_property_#bmc}作为扩展吗? -
然后 nginx 将 # 识别为注释并抱怨该行没有被分号终止。
-
好的,最后的努力:
\#而不是#? -
负数,现在标头的值为
\#bmc。感谢您对此进行调查! -
仍然很有趣。想打开一个错误?