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. Intel 4工艺太难了!酷睿Ultra终于突破5GHz

    无论是14nm还是10nm,Intel这些年的新工艺都有一个通性:刚诞生的时候性能平平,高频率都上不去,只能用于笔记本移动端(分别对应5代酷睿.10代酷睿),后期才不断成熟,比如到了13代酷睿就达到史 ...

  2. Linux 进程卡住了怎么办?

    在我们使用 Linux 系统时,如果网络或者磁盘等 I/O 出问题,会发现进程卡住了,即使用 kill -9 也无法杀掉进程,很多常用的调试工具,比如 strace, pstack 等也都失灵了,是怎 ...

  3. 【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5

    在 MacOS 上使用 OpenVINO C# API 部署 Yolov5 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速.高精度的结果, ...

  4. Typora+PicGo+码云Gitee搭建本地博客环境

    Typora+PicGo+码云Gitee搭建本地博客环境 前期准备: 安装Typora 安装链接:https://typora.io/ 安装PicGo 安装链接:https://github.com/ ...

  5. FreeSWITCH在session上执行定时挂机与取消

    操作系统 :CentOS 7.6_x64   FreeSWITCH版本 :1.10.9   日常开发中,会遇到需要在已存在的session上执行定时挂机和取消挂机的情况,今天整理下这方面的内容,我将从 ...

  6. JS 前序遍历、中序遍历、后序遍历、层序遍历详解,深度优先与广度优先区别,附leetcode例题题解答案

    壹 ❀ 引 按照一天一题的速度,不知不觉已经刷了快两多月的leetcode了,因为本人较为笨拙,一道简单的题有时候也会研究很久,看着提交了两百多次,其实也才解决了70来道简单题,对于二分法,双指针等也 ...

  7. NC19872 [AHOI2005]SHUFFLE 洗牌

    题目链接 题目 题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小 ...

  8. MySQL专题2: 事务和锁

    合集目录 MySQL专题2: 事务和锁 说说数据库事务特性及存在的问题 这属于数据库事务的基础概念了, 就是ACID Atomicity, 原子性, 事务包含的所有操作要么全部成功, 要么全部失败回滚 ...

  9. 中国特色AI创业:在OpenAI阴影下的探索与挑战

    在中国特色背景下,AI创业领域的一些荒诞现象以及对AI创业者.投资人的心态和影响.同时,OpenAI的强大影响力和国内AI领域的创业现状. 首先,小红书上关于中国版Sora项目的荒诞段子,揭示了部分人 ...

  10. SpringBoot+Shiro+LayUI权限管理系统项目-9.核心知识点总结

    1.说明 本篇讲一下本项目几个重要的知识点,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.Shiro如何设置密码加密算法 1.在shiro配置文件中添加: @Bean public HashedC ...