proxy_set_header 是 Nginx 配置中的一个重要指令,特别是在使用 Nginx 作为反向代理时。该指令允许你修改由 Nginx 传递给代理后端的请求头。这对于确保后端应用程序能够接收到正确的客户端信息(如 IP 地址、主机名等)以及控制缓存行为等场景非常有用。

以下是 proxy_set_header 指令的一些常见用法和详解:

  1. 设置 Host 头

    当 Nginx 代理请求到后端服务器时,默认情况下会保留原始的 Host 头。但是,在某些情况下,你可能需要覆盖这个值。

    nginx复制代码
    
    proxy_set_header Host $host;

    这里 $host 是 Nginx 变量,它包含了请求的主机名。

  2. 传递真实客户端 IP

    当 Nginx 位于负载均衡器或 CDN 后面时,后端服务器看到的客户端 IP 可能是负载均衡器或 CDN 节点的 IP,而不是真实用户的 IP。为了解决这个问题,你可以使用 X-Real-IPX-Forwarded-For 头来传递真实 IP。

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    $remote_addr 是客户端的 IP 地址。$proxy_add_x_forwarded_for 是一个特殊的 Nginx 变量,它包含了原始请求的 X-Forwarded-For 头的内容,并附加上客户端的 IP 地址。

  3. 控制缓存

    你可以通过修改或添加特定的头来控制后端服务器或中间缓存的行为。

    proxy_set_header Cache-Control "no-cache, no-store, must-revalidate";
    proxy_set_header Pragma no-cache;
    proxy_set_header Expires 0;

    这些头通常用于确保请求不会被缓存,或者用于控制缓存的持续时间。

  4. 自定义头

    除了修改标准 HTTP 头之外,你还可以添加自定义头来传递额外的信息给后端服务器。

    nginx复制代码
    
    proxy_set_header My-Custom-Header "SomeValue";
  5. 删除头

    虽然 proxy_set_header 主要用于添加或修改头信息,但你也可以通过将其设置为空值来删除不需要的头。

    nginx复制代码
    
    proxy_set_header Accept-Encoding "";

    这将删除 Accept-Encoding 头,可能是因为你不希望后端服务器对内容进行压缩。

  6. 条件性地设置头

    结合 Nginx 的 map 模块,你可以根据条件来设置头信息。例如,你可以创建一个映射来根据 $http_user_agent 变量的值设置不同的头。

  7. 注意安全性

    当使用 proxy_set_header 时,要注意不要泄露敏感信息或允许未授权访问。确保你了解每个设置的安全影响,并遵循最佳实践来保护你的应用程序和数据。

在配置 proxy_set_header 时,请确保你的设置与后端服务器的期望相匹配,并进行充分的测试以确保一切按预期工作。

nginx proxy_set_header详解的更多相关文章

  1. nginx配置详解(转)

    Nginx 配置文件详解 user nginx ; #用户 worker_processes 8; #工作进程,根据硬件调整,大于等于cpu核数 error_log logs/nginx_error. ...

  2. Nginx系列(10)- Nginx配置文件详解

    nginx文件结构 ... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全 ...

  3. Nginx高性能服务器安装、配置、运维 (3) —— Nginx配置详解

    四.Nginx 配置详解 YUM方式安装的Nginx默认配置文件放在/etc/nginx目录下,使用Vim编辑/etc/nginx/nginx.conf: ---------------------- ...

  4. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  5. nginx之旅(第一篇):nginx下载安装、nginx启动与关闭、nginx配置文件详解、nginx默认网站

    一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http: ...

  6. Nginx配置详解 http://www.cnblogs.com/knowledgesea/p/5175711.html

    Nginx配置详解 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作 ...

  7. Nginx rewrite 详解

    Nginx rewrite 详解 本篇主要介绍 nginx 的 rewrite 重定向这个功能进行 详解介绍, 以及介绍它的使用场景 1. rewrite 基本介绍 rewrite是实现URL重写的关 ...

  8. Nginx配置文件详解

    Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd具有占有内存少,稳定性高等优势. ######Nginx配置文件nginx.conf中文详解##### #定义Ngin ...

  9. Nginx中文详解、配置部署及高并发优化

      一.Nginx常用命令: 1. 启动 Nginx          /usr/local/nginx/sbin/nginxpoechant@ubuntu:sudo ./sbin/nginx2. 停 ...

  10. 一、Nginx配置文件详解

    配置文件介绍 主要有两部分:分别是 main:主体部分 http{}:虚拟主机配置部分 配置指令主要以分号结尾:配置语法:directive value1 [value2 ....] 支持使用的变量 ...

随机推荐

  1. IDEA破解激活

    !!!不要使用最新2021.2.3以后的版本,没有30天免费试用.推荐使用2021年之前的版本!!! 1: IDEA安装后使用30天免费试用进入,然后找到图中位置点击 2: 点击下图链接下载破解jar ...

  2. XPath从入门到精通:基础和高级用法完整指南,附美团APP匹配示例

    XPath 通常用来进行网站.XML (APP )和数据挖掘,通过元素和属性的方式来获取指定的节点,然后抓取需要的信息. 学习 XPath 语法之前,首先了解一下一些概念. 概念介绍 节点之间的关系 ...

  3. 如何进行IIS性能优化,提高应用并发能力

    2021-03-05 先附上IIS的官方文档,如果你的英文阅读能力不错的话,直接阅读官方文档,更加清楚明白: https://docs.microsoft.com/zh-cn/iis/get-star ...

  4. TValue 的 TTypeKind 的自动转换

    首先官方的定义: TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat, tkString, tkSet, tkClass ...

  5. electron 安装不同的版本的方法

    1.官网:http://www.electronjs.org/ 2.思考,既然是npm 安装,那么肯定也在 npm中央仓库有,那么去中央仓库看下: npm i -D electron@11.0.4

  6. IDE 不用鼠标 向下选择

  7. 【分布式】load balance 03-一致性哈希算法 java 实现

    负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 本节我们来看一下如何实现一个一致性 hash 框架. ...

  8. Swoole从入门到入土(12)——HTTP服务器[Response]

    继上一节了解完请求对象之后,这一节我们着重了解响应对象(Response).响应对象主要用于将数据发现到客户端.当 Response 对象销毁时,如果未调用 end 发送 HTTP 响应,底层会自动执 ...

  9. Java 23种设计模式的分类和使用场景

    听说过GoF吧? GoF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为<设计模式-- ...

  10. Oracle 10gR2新SQL提示——opt_param

    [English] 搜索Internet 搜索 HelloDBABA 首页 English 中文 技术文档 文章 案例 产品及下载 产品 >> FyDB OraTracer FySafe ...