nginx(三)实现反向代理客户端 IP透传

正常情况下,客户端去访问代理服务器,然后代理服务器再取访问真实服务器,在真实服务器上,只能显示代理服务器的ip地址,而不显示客户端的ip地址,如果想让客户端的ip地址也能在真实服务端看见,这一技术叫做IP透传 

$http_x_forwarded_for:这个变量我们要赋值给它,并且会一直保留,每次都会追加

可以在主配置文件里面的日志文件里面看见这一选项

 

   

   #proxy_set_header X-Real-IP $remote_addr;                   #只添加客户端IP到请求报文头部,转发至后端服务器proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #添加客户端IP和反向代理服务器IP到请求报文头部

 如果有一个代理服务器,可以写第一个

如果有多个代理服务器,则下面的

如果既想看见客户端ip又想看见代理服务器 就添加第二行

在真实服务端的日制中查看,是看不见客户端或者代理服务器端的ip的

如果想看见真实访问的ip地址,就是客户端跟代理服务端的ip时 看以下操作

单机IP透传

在代理服务端(7-1) (nginx系统)

在子配置文件里面配置内容  X-Forwarded-For 这是一个变量

 

7-2真实服务器上(httpd系统)

 用set list 可以查看时在196行(set nu可以看到多少行),然后进行添加 (只需要将次变量加入即可)

 X-Forwarded-For 

 

然后重启

然后再用另外一台客户端(7-3)去curl192.168.68.3的代理服务器

此时 再去7-2查看日志

 

 多机IP透传 (把所有机器换成nginx,都是nginx系统)

在每个代理服务器上面都要设置:proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #添加客户端IP和反向代理服务器IP到请求报文头部

在nginx中,变量 X-Forwarded-For已经写好了,都写在日志文件中了 只需要在每个代理服务端的配置文件中写入proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for即可

 代理服务器1:192.168.68.3

代理服务器2:192.168.68.4

真实服务器:192.168.68.5

(访问代理服务器1 就跳转到代理服务器2      访问代理服务2  就跳转到真是服务器)

代理服务器1配置:

代理服务器二配置:

 

随后,重载

 

 然后代理服务器1 curl自己会出现 7-3 因为跳转到真是服务器上了

 最后,在真是服务器上面查看日志,会出现代理ip 跟客户端ip

http反向代理负载均衡 upstream

 

upstream 在http模块里面

 代理服务器:192.168.68.3

真实服务器1:192.168.68.4

真是服务器2::192.168.68.5

代理服务器 :

修改主配置文件

加入服务器组

然后将子配置文件注释掉,如果不注释,不能进行下面的location操作

 

随后,在location里面修改

 

随后保存并退出

 

 真是服务器1:

真实服务器2

 

 随后,在代理服务器服务器上curl

一会7-2 一会7-3

以上为轮询算法(nginx默认),一人一次的意思

 nginx有检测机制,如果有一台服务器挂掉,nginx只会去访问正常的那一台 (健康性检查)

 

加权轮询 weight

 weight:5  意思为上面分5次 下面没写,默认一次

实例:

在代理服务器(192.168.68.3)上的主配置文件里面修改

随后,保存重载  然后在curl

可以看出192.168.68.4 出现3次 192.168.68.5出现一次

  

#server支持的parameters如下:
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number  #给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number  #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
backup  #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器 sorry server   自己不能转自己
down    #标记为down状态
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx

 

max_fails  表示链接次数,当检验计算机是否挂掉,max_fails=3 就表示尝试连接次计算机三次 ,如果不行就认为挂掉

fail_timeout :如果检测到计算机还活着,等个多少秒再上线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel数据表定制分组排序

实例需求:某学校体育活动统计表如下图左侧表格所示,数据按照班级排列,现在需要根据如下规格对表格进行排序 “幼儿”班级排列在表格最后按照“次数”降序排列“幼儿”班级同样按“次数”降序排列 排序结果如下图中右侧表格所示。 示例代码…

基于springboot+vue的保险信息网站(源码+论文)

文章目录 文章目录 前言 一、功能设计 二、功能实现 2.1 前台功能设计 2.1.1 网站首页 2.1.2 保险产品列表 2.1.3 留言板界面 2.1.4 产品查询界面 2.2后台管理设计 2.2.1 系统用户登录管理 三、库表设计 四、论文 前言 随着互联网的不断发展,现在人们获…

mybatis基础操作(二)

事务管理 获取sqlSession时,默认开启事务,SqlSessionFactory类实例在调用openSession时不设置或者设置为false,此情况下,操作完成后,需要手动提交。 手动提交与回滚事务 public void insertStudent() {// 会话链接S…

Apache Bench(ab )压力测试

目录 参数说明示例1:压力测试示例2:测试post接口post数据文件该如何编写? apr_pollset_poll: The timeout specified has expired (70007)apr_socket_recv: Connection reset by peer (104)参考 参数说明 官方文档参考这里。 ab -c 100 -n …

解决vscode内置视图npm脚本操作报权限问题

项目背景 当我们使用 vscode 运行NPM脚本时却爆红了,提示系统上禁止运行脚本。 解决思路 竟然提示权限不够,那么咱们就从系统权限出发,vscode右键以管理员身份运行 在集成终端中输入一下命令 # get-executionpolicy是PowerShell中的命令,用…

人工智能水印技术入门:工具与技巧

近几个月来,我们看到了多起关于“深度伪造 (deepfakes)”或人工智能生成内容的新闻报道:从 泰勒斯威夫特的图片、汤姆汉克斯的视频 到 美国总统乔拜登的录音。这些深度伪造内容被用于各种目的,如销售产品、未经授权操纵人物形象、钓鱼获取私人…

学不动系列-eslint

ESLint 介绍在最简单的项目使用eslint,包括eslint的vscode插件的使用,自动化格式代码,自动化修复代码,和webpack,vite的配合使用 单独使用 第一步:构建一个空项目 npm init -y 在根目录新建文件./src/app.js&#…

[spark] RDD 编程指南(翻译)

Overview 从高层次来看,每个 Spark 应用程序都包含一个driver program,该程序运行用户的main方法并在集群上执行各种并行操作。 Spark 提供的主要抽象是 resilient distributed dataset(RDD),它是跨集群节点分区的元素集合&…

生成对抗网络

生成对抗网络 GAN 什么是GAN GAN含义:生成对抗网络(Generative Adversarial Networks),主要做目标判别,应用在图像分类、语义分割、目标检测。 GAN简述:GAN包括生成器Generator(G)、判别模型Discriminat…

【架构之路】糟糕程序员的20个坏习惯,切记要改掉

文章目录 强烈推荐前言:坏习惯:总结:强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 前言: 优秀的程序员…

关于电脑一天24小时多少度电电脑的一天用电量计算

随着这几年物价的上涨,一些地区的电价越来越高,而我们经常需要使用电脑,那么一台电脑一天24小时用多少度电呢? 如何计算电脑一天的用电量? 让我们跟随小编来了解更多吧。 1、功耗、主机箱功耗 现在的计算机中&#xf…

DTD、XML阐述、XML的两种文档类型约束和DTD的使用

目录 ​编辑 一、DTD 什么是DTD? 为什么要使用 DTD? 内部 DTD 声明 具有内部 DTD 的 XML 文档 外部 DTD 声明 引用外部 DTD 的 XML 文档 二、XML 什么是XML? XML 不执行任何操作 XML 和 HTML 之间的区别 XML 不使用预定义的标记…

js 面试 什么是WebSockets?HTTP和HTTPS有什么不同?web worker是什么?

概念: webSocket 是一种在客户端和服务端之间建立持久连接的协议,它提供全双工通信通道,是服务器可以主动向客户端推送数据,同时也可以接受客户端发送的数据。 1 webSocket与https区别? 在网络通信中,We…

SVN教程-SVN的基本使用

SVN(Apache Subversion)是一款强大的集中式版本控制系统,它在软件开发项目中扮演着至关重要的角色,用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比,SVN 的集中式架构使得团队能够更加协同地进行开发&…

如何进行写作的刻意练习

写作从来不可能一蹴而就,而是一件需要我们持续坚持、努力的事情。 人如果没有目标就会迷失方向, 既然需要长期的坚持,就需要我们根据自身情况制定每一阶段的目标。 目标的制定要清晰可达,不能模棱两可,要认证对待。 …

基于springboot+vue的二手手机管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【Vue】插槽-slot

📝个人主页:五敷有你 🔥系列专栏:Vue ⛺️稳中求进,晒太阳 插槽 作用:让组件内部一些 结构 支持 自定义 插槽的分类: 默认插槽。具名插槽。 基础语法 组件内需要定制的结构部分&…

WEB漏洞 逻辑越权之支付数据篡改安全

水平越权 概述:攻击者尝试访问与他拥有相同权限的用户的资源 测试方法:能否通过A用户操作影响到B用户 案例:pikachu-本地水平垂直越权演示-漏洞成因 1)可以看到kobe很多的敏感信息 2)burp抓包,更改user…

Codeforces Round 929 (Div. 3)(A,B,C,D,E,F,G)

这场没考什么算法,比较水,难度也不是很高。比赛链接 硬要说的话E有个 前缀和 加 二分,F是数学BFS,G是个构造 A. Turtle Puzzle: Rearrange and Negate 题意: 给你一个由 n n n 个整数组成的数组 a a a 。您必须对…

IOC 和 AOP

IOC 所谓的IOC(inversion of control),就是控制反转的意思。何为控制反转? 在传统的程序设计中,应用程序代码通常控制着对象的创建和管理。例如,一个对象需要依赖其他对象,那么它会直接new出来…