用HTTP proxy module配置一个而反向代理服务器

news2025/9/20 7:44:08

反向代理与正向代理

摘抄:https://cloud.tencent.com/developer/article/1418457

正向代理

正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。
在这里插入图片描述

正向代理,其实是"代理服务器"代理了"客户端",去和"目标服务器"进行交互。

通过正向代理服务器访问目标服务器,目标服务器是不知道真正的客户端是谁的,甚至不知道访问自己的是一个代理

正向代理的用途

突破访问限制

通过代理服务器,可以突破自身IP访问限制,访问国外网站,教育网等。

提高访问速度

通常代理服务器都设置一个较大的硬盘缓冲区,会将部分请求的响应保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

隐藏客户端真实IP

上网者也可以通过这种方法隐藏自己的IP,免受攻击。

反向代理

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

在这里插入图片描述

反向代理,其实是"代理服务器"代理了"目标服务器",去和"客户端"进行交互。

通过反向代理服务器访问目标服务器时,客户端是不知道真正的目标服务器是谁的,甚至不知道自己访问的是一个代理。

反向代理的用途

隐藏服务器真实IP

使用反向代理,可以对客户端隐藏服务器的IP地址。

负载均衡

反向代理服务器可以做负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上。

提高访问速度

反向代理服务器可以对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务,提高访问速度。

提供安全保障

反向代理服务器可以作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和SSL加

正向代理与反向代理的区别

虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的。

1、正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源。反向代理则是服务器的代理,帮助服务器做负载均衡,安全防护等。

2、正向代理一般是客户端架设的,比如在自己的机器上安装一个代理软件。而反向代理一般是服务器架设的,比如在自己的机器集群中部署一个反向代理服务器。

3、正向代理中,服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端。而在反向代理中,客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。

4、正向代理和反向代理的作用和目的不同。正向代理主要是用来解决访问限制问题。而反向代理则是提供负载均衡、安全防护等作用。二者均能提高访问速度。

Nginx反向代理服务器

Nginx具有高并发高负载能力,一般会作为前端的服务器直接向客户端提供静态文件服务。

但是有一些复杂多变的业务,不合适放Nginx上,这是会使用Apache,Tomcat等服务器来处理。于是Nginx可以作为静态Web服务器,也可以是反向代理服务器。

当客户端发来HTTP请求时,Nginx并不会立刻转发到上游服务器,而是先把用户的请求完整的接收到Nginx坐在服务器的硬盘或者内存中,然后向上游服务器发起连接,把缓存的客户端请求转发到上有服务器。而其他Squid等其他反向大力服务器则是采用一边接收客户端请求,一边转发到上有服务器方式。

优点:降低上有服务器的负载,尽量把压力放到Nginx服务器上

缺点:延长了一个请求的处理时间,增加了用于缓存请求内容的内存和磁盘空间

降低上有服务器负载的原因:

通常客户端与代理服务器走的是公网,网速较慢,一个请求持续很久才完成。代理服务器与上游服务器一般是走内网,传输速度快。如果像Squid等反向代理服务器一样在客户端建立连接且开没有开始接收HTTP包体时,就已经向上游服务器建立了连接,例如上传一个1GB的文件,每次收到一个TCP包为2Kb,然后转发给上游,而这个整个接收1GB包过程中,服务器始终需要维护这个连接,对上游服务器的比给你发处理能力提出了要求。

而Nginx在接受完整个客户端的请求后,才与上游建立连接,由于内网,转发很快,这样与上游的连接时长就会很短。

负载均衡配置

upstream块

upstream name {…}

配置块:http

upstream块定义了一个上游服务器集群,便于反向代理中proxy_pass使用。

upstream backend {
	server backend1.example.com;
	server backend2.example.com;
	server 1.2.3.4:80;
}

server {
	location / {
		proxy_pass http://backend;
	}
}

server块

server name [parameters];

配置块:upstream

server定义上游服务器名字,可以是域名,IP地址端口,UNIX句柄等

weight=number:设置向这台上游服务器转发的权重,默认为1.

max_fails=number:配合fail_timeout使用,指定在fail_timeout时间段内,如果向当前上游服务器转发失败次数超过number,则认为在当前的fail_timeout时间内这台服务器不可用。max_fails默认为1,如果设置为0表示不检查失败次数

fail_timeout=time:fail_timeout表示该时间内转发失败多少次后就认为上游服务器暂不可用,用于反向代理功能优化。它与向上有服务器建立连接的超时时间,读取上游服务器的响应超时时间等无关。fail_timeout默认10s

down:表示所在上游服务器永久下线,只有使用ip_hash配置项时才使用

backup:在使用ip_hash配置项时无效。表示所在上游服务器只是配分服务器,只有在所有的非备份上游服务器都失效后,才会向所在的上游服务器转发请求。

upstream backend {
	server baidu.com;
	server 1.2.3.4:80;
	server 3.4.54.5:90  weight=6;
	server 1.2.3.4:80  max_fails=3 fail_timeout=30s;
	server unix:/tmp/backend3;
}

ip_hash

希望来自某一个用户的请求始终落到固定的一台上游服务器中。ip_hash原理,首先根据客户端IP地址计算一个key,然后key对upstream集群的数量取模。

ip_hash与weight配置不可同时使用,如果upstream集群中有一台上有服务器暂时不可用,不能直接删除该配置,而是要down参数标识,确保转发策略的一贯性。

upstream backend {
	ip_hash;
	server baidu.com;
	server 1.2.3.4:80;
	server 3.4.54.5:90;
	server 1.2.3.4:80  down;
	server unix:/tmp/backend3;
}

记录日志时支持的变量

如果需要将负载均衡时的一些信息记录到access.log日志中,那木在定义日志格式时可以使用负载均衡功能提供的变量

变量名意义
$upstream_addr处理请求的上游服务器地址
$upstream_cache_status表示是否命中缓存,取值范围:MISS,EXPIRED,UPDATING,STALE,HIT
$upstream_status上游服务器返回的响应中HTTP响应码
$upstream_response_time上游服务器的响应时间,精确到毫秒
KaTeX parse error: Expected group after '_' at position 14: upstream_http_̲HEADERHTTP的头部,例如:$upstream_http_host

可以定义日志格式:

log_format timing '$remote_addr - $upstream_addr - $upstream_response_time'

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

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

相关文章

2023-04-11 无向图的匹配问题

无向图的匹配问题 之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想 1 最大匹配和完美匹配 二分图回顾 二分图:把一个图中的所有顶点分成两部分,如果每条边的两端分别属于不同部分,则这个图是二分图。更多…

银行数字化转型导师坚鹏:金融科技与数字化转型成功案例

金融科技与数字化转型成功案例课程背景: 数字化转型背景下,很多银行存在以下问题: 不清楚金融科技如何赋能数字化转型? 不清楚银行金融科技体系的建设情况? 不了解银行数字化转型标杆成功案例? 课程特色…

AD六层板布线经验累积

目录 1、布局: 2、创建电源类PWR 3、高速部分可以加屏蔽罩, 4、EMMC和NANDFLASH采取兼容放置(创建联合) 5、HDMI设计 6、就近原则摆放 7、AV端口 8、模拟信号(1字型或L型走线) 9、WIFI模块 10、局…

Python+ChatGPT实战之进行游戏运营数据分析

文章目录一、数据二、目标三、解决方案1. DAU2. 用户等级分布3. 付费率4. 收入情况5. 付费用户的ARPU最近ChatGPT蛮火的,今天试着让ta写了一篇数据分析实战案例,大家来评价一下!一、数据 您的团队已经为您提供了一些游戏数据,包括…

考研数二第十七讲 反常积分与反常积分之欧拉-泊松(Euler-Poisson)积分

反常积分 反常积分又叫广义积分,是对普通定积分的推广,指含有无穷上限/下限,或者被积函数含有瑕点的积分,前者称为无穷限广义积分,后者称为瑕积分(又称无界函数的反常积分)。 含有无穷上限/下…

基于粒子群优化算法的分布式电源选址与定容【多目标优化】【IEEE33节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

接口自动化测试面试常问的题目及答案,你都会了吗?

目录 前言 接口自动化测试的优势是什么? 你使用过哪些接口自动化测试工具? 你如何设计一个接口自动化测试用例? 接口自动化测试中常见的测试类型有哪些? 你如何解决接口自动化测试中遇到的问题? 如何进行接口自动…

专属大模型来了!还有ECS降价40%、50款产品免费试用|阿里云峰会亮点一览

4 月 11 日,阿里巴巴集团董事会主席兼 CEO、阿里云智能集团 CEO 张勇在云峰会上表示,阿里巴巴所有产品未来将接入“通义千问”大模型,进行全面改造。 自 2019 年起,阿里即开始进行大模型研究,并在近期推出阶段性的研究…

Google Play 政策更新 | 2023 年 4 月

我们一如既往地努力让 Google Play 成为值得开发者和用户信赖的安全平台,欢迎您通过 Google Play PolicyBytes 中文视频了解本次政策更新的具体内容,更及时更清晰地掌握 Google Play 最新政策。△ Google Play 政策更新 | 2023 年 4 月Bilibili 视频链接…

ch03-PyTorch模型搭建

ch03-PyTorch模型搭建0.引言1.模型创建步骤与 nn.Module1.1. 网络模型的创建步骤1.2. nn.Module1.3. 总结2.模型容器与 AlexNet 构建2.1. 模型容器2.1.1.nn.Sequential2.1.2.nn.ModuleList2.1.3.nn.ModuleDict2.2. AlexNet 构建2.3. 总结3.nn 网络层:卷积层3.1. 1d/…

图像语义分割与目标检测概述

在计算机视觉领域,不仅有图像分类的任务,还有很多更复杂的任务,如对图像中的目标进行检测和识别,对图像进行实例分割和语义分割等。其中在基于卷积神经网络的深度学习算法出现后,图像的语义分割和目标检测的精度也有了质的提升。 …

绘制ROC曲线及P-R曲线

绘制ROC曲线及P-R曲线 描述 ROC曲线(Receiver Operating Characteristic Curve)以假正率(FPR)为X轴、真正率(TPR)为y轴。曲线越靠左上方说明模型性能越好,反之越差。ROC曲线下方的面积叫做AUC…

视频动态库测试及心得

视频动态库测试及心得 这几天一直在弄动态库测试,h给的写好的动态库--预处理模块的库。视频处理项目一部分,需要连接实际情况测试。 需求: 1.把实际相机连接到,并读取实时数据流,保存到双循环链表里面; 2.测试背景建模…

wsl安装torch_geometric

在官网选择需要的版本 选择安装途径,选择runfile 执行第一行,会下载一个文件到目录下 需要降低C的版本,否则 执行sudo sh cuda_11.1.0_455.23.05_linux.run,会出现 查看对应的文件,会有 可以加上override参数之后,…

了解 WAIT_ABANDONED 返回值的重要性

互斥锁(Mutex)和其他同步对象之间的重要区别之一是:互斥锁具有所有者。如果拥有互斥锁的线程退出而没有释放互斥锁,则互斥锁会自动释放。 但如果发生这种情况,你就有大麻烦了。 许多人忽略的一件事是同步函数(如 WaitForSingleO…

如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!

随着互联网技术的不断发展,网络项目的实施成为了许多企业和组织的重要任务。网络项目实施方案是指在进行网络项目实施时,为了保障项目的顺利进行,达到项目目标和交付要求,所制定的详细计划和操作指南。一个好的网络项目实施方案对…

数据结构 - 快排 | C

目录快速排序①hoare版本思路分析代码实现时间复杂度<整体优化><局部优化>②挖坑法思路分析代码实现③前后指针法思路分析代码实现④非递归快排思路分析代码实现以上代码汇总快速排序 ①hoare版本 思路分析 以上图为例&#xff1a; 指定一个数为a[key] 6&#x…

使用大华惠智双目半球网络摄像机DH-IPC-HD4140X-E2获取人流量统计数据

记录一下使用Java的SpringBoot大华SDK在智慧公厕项目中使大华惠智双目半球网络摄像机DH-IPC-HD4140X-E2获取人流量统计数据 首先根据说明书登录摄像头&#xff0c;一般摄像头都有自己的账号和密码(可能是admin admin 也可能是admin 888888 还有可能是admin 12345)&#xff0c;…

VMware ESXi 7.0 U3l Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

ESXi 7 U3 标准版集成 Intel 网卡、USB 网卡 和 NVMe 驱动 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-7-u3-sysin/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2023-03-31&#xff0c;发布 ESXi 7.0U…

C++轻量级Web服务器TinyWebServer源码分析之log篇

文章目录log日志篇简介一、日志类的定义与使用二、单例模式与阻塞队列的定义1、单例模式2、阻塞队列log日志篇简介 使用单例模式创建日志系统&#xff0c;对服务器运行状态、错误信息和访问数据进行记录&#xff0c;该系统可以实现按天分类&#xff0c;超行分类功能。其中异步…