`

nginx prosy set header的理解

阅读更多

        nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块。其中proxy_set_header指令就是该模块需要读取的配置文件。

        在这里,所有设置的值的含义和http请求同中的含义完全相同,除了Host外还有X-Forward-For。

        Host的含义是表明请求的主机名,因为nginx作为反向代理使用,而如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,

        如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败【默认反向代理服务器会向后端真实服务器发送请求,

        并且请求头中的host字段应为proxy_pass指令设置的服务器】。

        同理,X_Forward_For字段表示该条http请求是有谁发起的?如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,

        如果后端有防攻击策略的话,那么机器就被封掉了。因此,在配置用作反向代理的nginx中一般会增加两条配置,修改http的请求头:

        proxy_set_header Host $http_host;

        proxy_set_header X-Forward-For $remote_addr;

 

        这里的$http_host和$remote_addr都是nginx的导出变量,可以再配置文件中直接使用。如果Host请求头部没有出现在请求头中,则$http_host值为空,但是$host值为主域名。

        因此,一般而言,会用$host代替$http_host变量,从而避免http请求中丢失Host头部的情况下Host不被重写的失误。

分享到:
评论

相关推荐

    教你怎么用Nginx往request的header中添加新字段

    总之,通过Nginx的`proxy_set_header`指令,我们可以方便地在HTTP请求头中添加自定义字段,这对于实现API接口的版本控制、增加请求元信息或者满足特定业务需求都非常有用。理解并灵活运用这一特性,能够提升Nginx...

    Windows版nginx去掉header中server后面的信息(nginx版本1.21.1)

    Windows版nginx去掉header中server后面的信息(nginx版本1.21.1) 使用方法: 1、关闭nginx服务 2、将新的nginx.exe替换原有的exe文件 3、重启nginx服务

    nginx add_header指令使用方法

    在nginx配置文件中,我们可以通过使用add_header指令来设置response header。这个指令的基本使用方法就是将header的key和value用空格分隔,然后写在nginx的配置文件中。例如,如果你想设置"Cache-Control"为"no-...

    Nginx代理时header头中带”_”信息丢失问题的解决

    前言 开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理... proxy_set_header X-Nginx-Proxy true; add_header Pro

    Nginx作为反向代理时传递客户端IP的设置方法

    因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...

    nginx配置教程之add_header的坑详解

    **Nginx 配置教程:深入理解 `add_header` 指令的陷阱** `add_header` 是 Nginx 的 `headers` 模块中的一个关键指令,它允许我们在 HTTP 响应头中添加自定义字段。然而,这个指令在实际使用中存在一些需要注意的坑...

    Python库 | nginx_set_conf_equitania-0.0.6-py3-none-any.whl

    标题中的"Python库 | nginx_set_conf_equitania-0.0.6-py3-none-any.whl"指的是一款名为`nginx_set_conf_equitania`的Python库,其版本号为0.0.6,是专为Python 3设计的。这个库可能是用于配置和管理Nginx服务器的...

    nginx + header 转发 灰度测试

    nginx Header 转发灰度测试配置详解 在本文中,我们将详细介绍如何使用 Nginx 实现 Header 转发灰度测试。灰度测试是一种重要的测试方法,可以帮助我们在不影响生产环境的情况下,测试新的服务或功能。我们将使用 ...

    oucb#3d-visualization-Iot-blog#nginx解决Too-many-header问题1

    title: nginx解决Too-many-header问题在对接海康卫视WEB无插件开发包时,自己的页面连接单独的摄像头时(连接NVR没这个问题),/ISA

    深入理解Nginx-陶辉-2版本.pdf.zip

    《深入理解Nginx》是陶辉编著的一本关于Nginx服务器的高级技术书籍,主要面向已经对Nginx有一定基础了解的读者。在深入探讨Nginx的2版本中,作者详细阐述了Nginx的核心特性和最新发展,帮助读者提升对Nginx的掌握...

    深入理解nginx

    本文适合系统架构师和高级工程师阅读,深入掌握nginx!掌握其原理

    Nginx跨域设置Access-Control-Allow-Origin无效的解决办法

    nginx 版本 1.11.3 使用大家说的以下配置,验证无效,跨域问题仍然存在 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow...

    深入理解Nginx模块开发与架构解析(完整版)

    深入理解Nginx模块开发与架构解析(完整版) pdf,nginx必备知识

    Nginx深入理解Nginx模块开发与架构解析(第2版)

    《Nginx深入理解Nginx模块开发与架构解析(第2版)》是一本针对Nginx技术的深入解析书籍,旨在帮助读者理解和掌握Nginx的核心设计理念以及如何进行高效的模块开发。这本书是该领域经典著作的更新版本,不仅延续了前一...

    nginx-1.9.12 windos 版本

    nginx-1.9.12 windos 版本 nginx 反向代理 负载均衡

Global site tag (gtag.js) - Google Analytics