http://4856809.blog.51cto.com/4846809/1188931

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不被重写的失误。

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。

这一HTTP头一般格式如下:
X-Forwarded-For: client1, proxy1, proxy2
其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。
鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址, 这通常是一个比较可靠的信息来源。

nginx中proxy_set_header Host $host的作用相关推荐

  1. php host头攻击,Apache/Nginx中Host头攻击的一些差异

    1. Host header 服务器的域名(用于虚拟主机 ),以及服务器所监听的传输控制协议端口号.如果所请求的端口是对应的服务的标准端口,则端口号可被省略. 自超文件传输协议版本1.1(HTTP/1 ...

  2. Nginx中server_name 参数详解

    Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1.准确的server_name匹配,例如: server {list ...

  3. Nginx中保持长连接的配置

    哎,老转载王了,原博客地址:https://www.cnblogs.com/kevingrace/p/9364404.html 在Nginx中,对于http1.0与http1.1是支持长连接的.htt ...

  4. 从一起丢包故障来谈谈 nginx 中的 tcp keep-alive

    一.故障 基本架构如图所示,客户端发起 http 请求给 nginx,nginx 转发请求给网关,网关再转发请求到后端微服务. 故障现象是,每隔十几分钟或者几个小时不等,客户端就会得到一个或者连续多个 ...

  5. 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解

    看了很多nginx的配置,好像都忽略了ip直接访问web的问题,不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面. 官方文档中提供的方法: If you d ...

  6. Nginx中常用的指令配置详解

    rewrite指令的作用:是做一些访问匹配规则的判断,从而实现相应的操作. location / { proxy_pass http://192.168.1.5 if (-d $request_fil ...

  7. NGINX中如何根据客户端IP地址控制访问

    NGINX Web 服务器安全加固有多种方法,其中一种是基于 IP 地址的访问控制.本指南解释了如何通过在 NGINX 中基于客户端的 IP 地址控制访问来保护 Web 应用程序. NGINX中基于客 ...

  8. Nginx中的location规则与rewrite重写(详解)

    内容预知 1.Nginx中location与rewrite 1.1 location与rewrite常用的正则表达式 1.2  location与rewrite的联系和区别 2.location的匹配 ...

  9. Nginx 细说proxy_set_header $remote_addr和X-Forwarded-For

    先来看下proxy_set_header的语法 语法: proxy_set_header field value; 默认值: proxy_set_header Host $proxy_host; pr ...

最新文章

  1. 零基础入门学习Python(6)-常用操作符
  2. .NET设计模式(16):模版方法(Template Method)
  3. Android 中input event的分析
  4. html重绘text,使用DrawText重绘C++
  5. C++primer第十章 泛型算法 10.1 概述 10.2 初识泛型算法
  6. 【英语学习】【医学】Unit 06 Urine Formation
  7. Windows 10中Cisco *** Client提示Reason 442: failed to enable virtual adapter
  8. 命令行 蓝牙_蓝牙键盘接入UOS系统的方法
  9. 多旋翼无人机飞控系统设计之详细设计方案
  10. 梅特勒托利多xk3124电子秤说明书_梅特勒托利多称重仪表XK3124 B520
  11. 十字路口通行优先权,十字路口通行规则图解
  12. 金立手机android怎么关闭,金立手机软件卸不掉怎么办 金立手机软件卸不掉如何解决...
  13. 51单片机和32单片机有什么区别?该从哪个开始入门学习?
  14. 零基础学C语言设计难吗,【经验分享】零基础想学C语言,过来人提醒大家几点...
  15. 数据库迁移 | DBMotion v23.04 支持异地多活
  16. Vue中实现表格隔行换色效果
  17. 饭局给领导送礼被打脸,高手用这3个技巧,感情和人脉“双到位”
  18. db4o面向对象数据库::NoSQL
  19. ccna 闫辉单臂路由 和 acl access control list
  20. 如何抓住IT行业最后的红利?网络安全为什么是风口行业?

热门文章

  1. linux AT T Assembly
  2. 【统计机器学习】考核标准 + 课堂练习题汇总
  3. 树状数组(Binary Index Tree)
  4. linux 网站流量日志系统,网站日志分析_linux network的技术博客_51CTO博客
  5. CAS:1427004-19-0,DBCO-PEG4-NHS ester是含有NHS酯的点击化学PEG试剂
  6. 键盘中的上下按键在excel中无法控制选择单元格
  7. Windwos 手动杀毒
  8. C学习:无符号有符号数的移位问题分析总结
  9. openssl 对称加密算法enc命令详解
  10. 龙兄鼠弟:Ipv4, Ipv6, Mtu, Mss, Fragmentation 那些事.