【Web服务应用】Nginx七层反向代理与四层反向代理

news2025/1/9 3:47:40

Nginx七层反向代理与四层反向代理

  • 一、代理
    • 1.1什么是代理
    • 1.2正向代理
    • 1.3反向代理
    • 1.4反向代理的适用场景
    • 1.5正向代理与反向代理的区别
  • 二、反向代理
    • 2.1负载均衡
    • 2.2动静分离
  • 三、Nginx实战
    • 3.1七层反向代理,负载均衡,动静分离
    • 3.2四层反向代理

一、代理

1.1什么是代理

  • 代理:也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。例如:一些网关、路由器等网络设备都具备网络代理的功能。代理服务有利于保障网络终端的隐私或者安全,可以在一定程度上阻止网络攻击(因为通过代理,可以隐藏真正的服务器端/客户端)。

1.2正向代理

在这里插入图片描述

  • 通常我们说的代理,都是指的正向代理。继续看这张图,你会发现,此处的代理服务器可以由客户端提供,也可以由服务器端提供。
    当客户端主动使用代理服务器时,此时的代理叫正向代理。比如:一些网络代理工具(加速器/VPN…)
    在这里插入图片描述
  • 通过上图可以看到,客户端并没有直接与服务器相连。正向代理隐藏了真实的客户端地址。可以很好地保护客户端的安全性。

1.3反向代理

  • 服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在

在这里插入图片描述
反向代理整个流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。

1.4反向代理的适用场景

  • 负载均衡
    (1)如果服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援。可以有效降低服务器压力,增加服务器稳定性
  • 提升服务器安全性
    (1)可以对客户端隐藏服务器的IP地址
    (2)也可以作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
  • 加密/SSL加速
    (1)将SSL加密工作交由配备了SSL硬件加速器的反向代理来完成提供
  • 缓存服务,加速客户端访问
    (1) 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
  • 数据统一压缩

(1)节约带宽
(2)为网络带宽不好的网络提供服务

  • 统一的访问权限控制
  • 统一的访问控制
  • 突破互联网的封锁
  • 为在私有网络下(如局域网)的服务器集群提供NAT穿透及外网发布服务
  • 上传下载减速控制

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

当前面的内容理解后,对于正向代理和反向代理的区别就很好理解了。
最核心的不同在于代理的对象不同。 正向代理是代理客户端,反向代理是代理服务器。
而根据这核心的区别,我们也可以记住:代理哪端便可以隐藏哪端。
也就是说:
正向代理隐藏真实客户端,反向代理隐藏真实服务端。

二、反向代理

2.1负载均衡

  • Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
  • 内置策略为轮询,加权轮询,Ip hash。
  • 扩展策略,就天马行空,只有你想不到的没有他做不到的。

负载均衡有哪些模式

Nginx 负载均衡模式:
●rr 轮询 负载均衡模式:
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。

●least_conn 最少连接: 优先将客户端请求调度到当前连接最少的服务器。

●ip_hash 负载均衡模式:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session
共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。

●fair(第三方)负载均衡模式: 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

●url_hash(第三方)负载均衡模式:
基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。

  • 轮询
    循环的意思
    在这里插入图片描述
  • 加权轮询

在这里插入图片描述
iphash

  • 对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

  • 有n台 tomcat 服务器,则有n个 session,如何实现session共享?【实际开发使用的是redis】

  • nginx 提供的方法是:ip进行hash运行,从而固定的ip访问固定的某台服务器。
    在这里插入图片描述

2.2动静分离

▪ 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。


让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
在这里插入图片描述

三、Nginx实战

3.1七层反向代理,负载均衡,动静分离

Nginx代理tomcat服务器
)
(1)部署tomcat服务器,关闭防火墙,安装JDK,配置tomcat多实例,模拟两台tomcat服务器
,详情看上一篇博客

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)在两台tomcat服务器配置动态网页,

mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1");%>
</body>
</html>

在这里插入图片描述
tomcat2同样配置

(3)部署Nginx服务器

systemctl stop firewalld
setenforce 0

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \									#启用文件修改支持
--with-http_stub_status_module \					#启用状态统计
--with-http_gzip_static_module \					#启用 gzip静态压缩
--with-http_flv_module \							#启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module								#启用 SSL模块,提供SSL加密功能
--with-stream		

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service				

(4)添加Nginx负载均衡,动静分离

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	#gzip on;
	
	#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
	upstream tomcat_server {
		server 192.168.80.100:8080 weight=1;
		server 192.168.80.101:8080 weight=1;
		server 192.168.80.101:8081 weight=1;
	}
	
	server {
		listen 80;
		server_name www.kgc.com;
	
		charset utf-8;
	
		#access_log logs/host.access.log main;
		
		#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
		location ~ .*\.jsp$ {
			proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。
			proxy_set_header HOST $host;
##把$remote_addr赋值给X-Real-IP,来获取源IP
			proxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		#配置Nginx处理静态图片请求
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
			root /usr/local/nginx/html/img;
			expires 10d;
		}
		
		location / {
			root html;
			index index.html index.htm;
		}
......
	}
......
}

在这里插入图片描述

(5)配置Nginx静态页面,浏览器访问器实验
在这里插入图片描述

3.2四层反向代理

在这里插入图片描述

(1) 如图所示四层反向代理只做一个负载均衡配置,他代理两台七层反向代理服务器
第一步:如上面实验所示,在配置一台七层反向代理服务器,里面也要配置动静分离与负载均衡,同样代理两台tomcat服务器
(2)配置四层反向代理服务器

#四层反向代理需要stream块,如果编译时没有配置请重新编译
./configure --with-stream

和http同等级:所以一般只在http上面一段设置,
stream {
	#这里代理两台Nginx服务器
    upstream appserver {
		server 192.168.243.102:80 weight=1;
		server 192.168.243.103:80 weight=1;
    }
    #设置反向代理的端口号为8080与本机的端口号不一致即可
    server {
        listen 8080;
        proxy_pass appserver;
    }
}
http {
#实验环境中负载均衡最好把连接保持关闭,否则会发转跳转失败
......

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

测试复习(自用)

测试复习 通识/基础/概念 什么是软件测试 验证软件特性是否满足用户的需求 专业名词 需求 满足用户期望或正式文档&#xff08;合同、标准、规范&#xff09;所具备的条件和权能&#xff0c;包含用户需求和软件需求 用户需求软件需求 是测试人员开展软件测试工作的依据 如…

【Mysql】基础入门篇

文章目录 什么是数据库见见数据库服务器、数据库、表之间的关系数据逻辑存储MySQL架构SQL分类存储引擎 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还需要数据库&#xff0c;文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题 文件不利于数据查询和管理 文…

五年后,你是什么档次

每晚一到两篇的阅读 1.认清现实&#xff0c;她就是喜欢钱 2.不要再找理由&#xff0c;自卑才是你最大的动力 3.提高自己的任性指数 4.尽量把钱花在有营养的地方 5.不要成为一条被溺死的鱼 6.总有一天&#xff0c;卫生纸比钞票值钱 7.穷忙的人&#xff0c;不要开Toyota 8.目标就…

easypoi模板导出文件,支持Liunx系统(自用)

springboot使用easypoi通过使用模板导出文件 第一步:导入poi以及easypoi的maven坐标 首先&#xff0c;easypoi是依赖于Apache的poi实现的&#xff0c;因此需要先引入poi <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifac…

智慧加油站解决方案,提高加油区和卸油区的安全性和效率

英码科技智慧加油站解决方案是一个综合应用了AI智能算法的视觉分析方案&#xff0c;旨在提高加油区和卸油区的安全性和效率。 加油区算法&#xff1a; 吸烟检测&#xff1a;通过AI算法分析视频流&#xff0c;检测是否有人在加油区域吸烟&#xff0c;以防止火灾风险。 打电话…

Web Scoket简述

Web Socket 简介 初次接触 Web Socket 的人&#xff0c;我们已经有了 HTTP 协议&#xff0c;为什么还需要另一个协议&#xff1f;它能带来什么好处&#xff1f; 因为 HTTP 协议有一个缺陷&#xff1a;通信只能由客户端发起。http基于请求响应实现。 &#xff08;准确来说HTTP…

使用Cloudflare Zaraz 可让同意管理变得简单明了

视您的居住地而定&#xff0c;在首次造访网站时&#xff0c;可能会要求您同意使用Cookie。如果您曾经点选过「核准」以外的其他选项&#xff0c;您就会注意到&#xff0c;关于应该或不应该允许哪些服务使用Cookie 的选项清单可能非常长。这是因为网站通常会整合许多第三方工具进…

陕西省赛2023-部分Reverse复现

目录 我的upx -d怎么坏了 动调脱upx壳&#xff1a; babypython BadCoffee ob混淆&#xff1a; 我的upx -d怎么坏了 打开附件&#xff0c;发现是upx壳&#xff0c;应该是修改了区段名或者特征码 但是修改过还是不对.....(哭.jpg)应该还是改了其他 好学长告诉我直接动态调试…

【Matter】Nordic Mattter(开发大纲)

nRF Connect SDK 支持Mattter Nordic提供的Matter用户指南 子页面&#xff1a; Matter概况开始使用Matter如何创建 Matter 最终产品 Matter网络拓扑结构 Thread&#xff1a;Thread是一种开放的低功耗无线通信协议&#xff0c;旨在为物联网设备提供安全、稳定、高效的IPv6连接。…

混合动力汽车耐久测试

一 背景 整车厂可通过发动机和电机驱动的结合为多款车型提供混合动力驱动技术。汽车集成电机驱动可大大减少二氧化碳的排放&#xff0c;不仅如此&#xff0c;全电动驱动或混合动力驱动的汽车还将使用户体验到更好的驾驶感受&#xff0c;且这种汽车可通过电动机来实现更快的加速…

机器学习 | 降维问题

目录 一、主成分分析 二、奇异值分解 2.1 奇异值分解原理 2.2 奇异值分解实践 三、特征值与特征向量 一、主成分分析 主成分有如下特征&#xff1a; 每个主成分是原变量的线性组合&#xff1b;各个主成分之间互不相关&#xff1b;主成分按照方差贡献率从大到小依次排列&…

【诗视野文学社】五一特刊|本期诗人:胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵

【诗视野文学社】五一特刊 本期诗人&#xff1a;胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵 脂茉莉简介&#xff1a;刘彦芹&#xff0c;女&#xff0c;作家、诗人&#xff0c;江苏人&#xff0c;年少习诗&#xff0c;评论及随笔见诸媒体及报刊&#xff0c;诗歌被选入海…

中国人民大学与加拿大女王大学金融硕士引领你走出职场困境,勇往直前!

走到一定职位时&#xff0c;想更进一步基本无望&#xff0c;到了自己事业的瓶颈期。从底层一路冲到中层靠的是能力&#xff0c;靠的是忠诚&#xff0c;靠的是勤奋&#xff0c;而再向上走&#xff0c;该凭借什么&#xff0c;完全找不到方向。而那些极个别的人却在自己看不到的地…

基于PySpark的10亿级数据集LAION-5B元数据快速处理实践(全文分享)

推荐语 多模态大模型训练如火如荼展开&#xff0c;但以LAION-5B为代表的大规模多模态数据集获取却成了一个令人头疼的问题。 OpenDataLab两位工程师在浦数 AI Talk做了非常实用的LAION-5B下载经验分享&#xff0c;我们整理了其演讲内容、Parquet文件、图片下载工具&#xff0…

Hive执行计划之一文读懂Hive执行计划

目录 文章目录 概述1.hive执行计划的查看2.学会查看Hive执行计划的基本信息3.执行计划步骤操作过程4.explain extended 概述 Hive的执行计划描述了一个hiveSQL语句的具体执行步骤&#xff0c;通过执行计划解读可以了解hiveSQL语句被解析器转换为相应程序语言的执行逻辑。通过…

软件测试人员迷茫之中如何找到职业发展的方向?

出现迷茫或焦虑的原因是什么&#xff1f; 也许每个人的原因不一样&#xff0c;但不外乎是下面这些原因叠加的结果。 1、敏捷和DevOps开发模式的推行&#xff0c;虽然20年的历史是否已经证明“敏捷已经失败了” 暂且不管&#xff0c;但敏捷/DevOps之风刮的还是很厉害&#xff0c…

每日一练 | 华为认证真题练习Day53

1、现在有以下10.24.0.0/24&#xff0c;10.24.1.0/24&#xff0c;10.24.2.0/24&#xff0c;10.24.3.0/24四个网段&#xff0c;这四个网段可以汇总为以下哪个网段&#xff1f;&#xff08;多选&#xff09; A. 10.24.0.0/23 B. 10.24.1.0/23 C. 10.24.0.0/22 D. 10.24.0.0/2…

Window环境rabbitmq安装教程

首先我们需要取官网下载对应的两个安装包 第一个是rabbitmq安装包路径在括号里&#xff08;Installing on Windows Manually — RabbitMQ&#xff09; 我们选择window下载即可。 下图是下载的样子&#xff0c;确认是这两个就没问题了 第二个是erlang&#xff08;http://erlang…

上海市计算机学会竞赛平台五月月赛题目汇总

我又来了&#xff01; 爆切了一大堆没用的水题后&#xff0c;我终于来发题解啦&#xff01;&#xff01;&#xff01; T1原题https://iai.sh.cn/problem/792 我们考虑通过计算最长上升连续自然数串&#xff08;是这么叫的吗&#xff09;来获取答案 可以开两个数组 和 来计…

从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用

作者&#xff1a;DataTester 用户体验是决定互联网产品能否长久生存的关键&#xff0c;每一个基于产品功能、使用和外观的微小体验&#xff0c;都将极大地影响用户留存和满意度。 对于企业协作平台飞书而言&#xff0c;用户体验旅程从打开产品页面的一瞬间就已开始&#xff0c;…