如何在将请求传递给上游服务器之前删除 Nginx 中的客户端标头?
Posted
技术标签:
【中文标题】如何在将请求传递给上游服务器之前删除 Nginx 中的客户端标头?【英文标题】:How to Remove Client Headers in Nginx before passing request to upstream server? 【发布时间】:2017-11-16 02:53:23 【问题描述】:上游服务器是 wowza ,如果我不在应用程序级别启用它们,它不接受自定义标头。
nginx 作为代理服务器工作,我想从浏览器发送一些自定义标头,这些标头应由 Nginx 代理接收和记录,但在将请求转发到上游服务器之前,应从请求中删除这些标头。
所以上游服务器永远不会知道那里有任何自定义标头。
我尝试了 proxy_hide_header
和 proxy_set_header "<header>" ""
,但似乎它们适用于响应标头而不是请求标头。
即使我接受在 wowza 上启用标头,但我还是无法找到在服务器级别为所有应用程序启用标头的方法。目前我必须为每个新创建的应用程序添加标题,这对我来说是不可行的。
任何帮助将不胜感激。
【问题讨论】:
Hide a client request header with a Nginx reverse proxy server的可能重复 【参考方案1】:proxy_set_header HEADER ""
完全符合您的预期。见https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header。
如果标头字段的值为空字符串,则该字段将不会传递给代理服务器:
proxy_set_header Accept-Encoding "";
我刚刚确认这是按照文档说明工作的,我使用的是 Nginx v1.12。
【讨论】:
谢谢,我把它放在 http 模块而不是服务器/位置模块中。 @Martynas - 根据您发布的链接,似乎proxy_hide_header
适用于响应标头,而proxy_set_header
适用于请求标头。以上是关于如何在将请求传递给上游服务器之前删除 Nginx 中的客户端标头?的主要内容,如果未能解决你的问题,请参考以下文章
Django:“如何在将 url() 传递给 MyClass.as_view() 之前从 url() 获取 slug?”或“如何检查注册是不是开放?”