如何在将请求传递给上游服务器之前删除 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_headerproxy_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?”或“如何检查注册是不是开放?”

使用SSL配置nginx反向代理时出现400错误请求错误。

Nginx上游过早关闭连接,同时从上游读取响应标头,用于大型请求

Nginx实现负载均衡

Nginx反向代理的工作方式

NGINX:从上游读取响应头时上游超时(110:连接超时)