linux进阶篇:Nginx反向代理原理与案例详解

Linux服务搭建篇:Nginx反向代理原理与案例详解

一、什么是正向代理

举个栗子:
我们在校外、公司外,是访问不到学校、公司的内网的,但是我们想要访问内网资源时,会用到VPN。而一般内网会存在一个VPN服务器,我们使用VPN其实就是让内网的VPN服务器代替我们去进行访问(VPN服务器位于内网是可以访问内网资源的)。这其实就是一种正向代理,通过内网VPN服务器代理客户端进行请求。
正向代理: 如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。下面是正向代理的原理图。
由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理。本人经常用正向代理来进行上网。
在这里插入图片描述

二、什么是反向代理

反向代理: 看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
在这里插入图片描述
正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果实在服务器用,我们用户无感知,就是反向代理。

这里有个问题:反向代理服务器,怎么选择挂在它后面的哪一台具体服务器呢?答案在后文揭晓,这就是负载均衡。

三、安装Nginx和Tomcat

3.1 实验环境

这里准备了三台虚拟机来做这个案例,一个节点安装Nginx,其他两个节点安装Tomcat,通过Nginx服务做反向代理,访问tomcat
在这里插入图片描述
在这里插入图片描述
服务器需要开放端口,或者直接关闭防火墙,云服务器的话建议开端口,不要关防火墙

3.2 在192.168.88.10节点安装Nginx服务

添加nginx yum源
在这里插入图片描述
在这里插入图片描述
建立新的yum缓存
在这里插入图片描述
查看一下有没有可以安装的nginx
在这里插入图片描述
使用yum安装nginx
在这里插入图片描述
安装完成,启动nginx服务
在这里插入图片描述
访问nginx,在防火墙放行服务端口,懒得整就关防火墙。
在这里插入图片描述
完成安装!!!

3.3 Nginx配置文件

在学习 Nginx 之前,我们要熟知它的配置文件。毕竟,我们下面需要做的所有配置(反向代理、负载均衡、动静分离等),都是基于它的配置文件。
Nginx 默认的配置文件是在安装目录下的 conf 目录下,后续对 Nginx 的使用基本上都是对此配置文件进行相应的修改。完整的配置文件,可以看一下文章最后。修改过nginx.conf配置文件,记得要重启Nginx服务
配置文件中有很多#号,该符号表示注释内容,去掉所有以 # 开头的段落,精简之后的配置文件内容如下(PS:其实注释掉的地方,都是一些功能的使用代码,需要用到的时候,取消注释即可):

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

去掉注释信息后,可以将 nginx.conf 配置文件分为三部分:

第一部分:全局块
 worker_processes  1;

从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
上面这行 worker_processes 配置,这是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events 块
events {worker_connections  1024;
}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http 块
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置

四、反向代理如何配置

4.1 反向代理实例一

在192.168.88.10节点安装tomcat服务
直接使用yum安装,centos默认yum源就有tomcat
yum install -y tomcat
在这里插入图片描述
安装默认浏览器管理界面 yum install -y tomcat-webapps tomcat-admin-webapps
在这里插入图片描述
启动tomcat,并设置开机自启动
在这里插入图片描述
访问tomcat主页,得先放行服务端口
在这里插入图片描述

开始配置反向代理案例一

案例一仅在一个节点上完成,分别安装nginx和tomcat,使用nginx做代理,真正的服务部署在tomcat上。
找到nginx的配置文件,添加以下内容,注意格式:

server {listen 80;server_name 192.168.88.10;location / {proxy_pass http://127.0.0.1:8080;}}

在这里插入图片描述
添加之后重启nginx,让配置文件生效
systemctl restart nginx
在这里插入图片描述
然后我们再次访问192.168.88.10的80端口,可以看到已经跳转到tomcat服务了,这样一个简单的反向代理就配置完成了
在这里插入图片描述

4.2 反向代理案例二

这个相对高级一点,使用3个节点,在192.168.88.10节点配置nginx,实现从192.168.88.10节点跳转到192.168.88.20和192.168.88.30节点的tomcat。
192.168.88.10节点的nginx在上面的案例已经安装完成,这里就不赘述了,安装其他两个节点的tomcat,安装过程和案例一相同
yum install -y tomcat
yum install -y tomcat-webapps tomcat-admin-webapps
192.168.88.20节点的tomcat
在这里插入图片描述
192.168.88.30节点tomcat
在这里插入图片描述
修改一下两个节点的tomcat主页文件,做一下区分
Tomcat主页文件位置(yum安装情况)/var/lib/tomcat/webapps/ROOT/index.jsp
在主页文件随意加一个标记即可,两个节点做法一样,修改之后重启tomcat
在这里插入图片描述

4.3 开始配置反向代理

编辑/etc/nginx/nginx.conf添加以下内容
vi /etc/nginx/nginx.conf
在这里插入图片描述
完成后重启nginx服务
在这里插入图片描述
访问代理服务器
在这里插入图片描述
刷新一下页面再看看
在这里插入图片描述
尝试down掉其中一个tomcat
在这里插入图片描述
再次访问代理服务器
在这里插入图片描述
现在就只有一台tomcat服务了,无论怎么刷新都只能访问192.168.88.20节点的tomcat,nginx反向代理案例到此结束!!!
希望对您有用,有不对的地方希望不吝赐教,欢迎在评论区留言,分享你的看法。

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

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

相关文章

n皇后问题

843. n-皇后问题 - AcWing题库 n皇后这道题目, 历来被作为理解深搜\回溯法的样板题, 首先我们可以用中规中矩的深搜来解决这道题: #include<iostream> using namespace std; const int N10; int n; char g[N][N];bool col[N],dg[N],udg[N];bool legal(int u,int i) {ret…

vulhub之jboss(CVE-2017-7504)

JBoss AS 4.x 及之前版本中&#xff0c; JbossMQ 实现过程的 JMS over HTTP Invocation Layer 的 HTTPServerILServlet.java 文件存在反序列化漏洞&#xff0c;远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。 CVE-2017-7504 漏洞与 CVE-2015-7501 的漏洞原理相似&a…

「51媒体」企业单位新闻稿件考核,怎么发布

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电力税务企事业单位部门等单位提供了新闻稿件&#xff0c;如何在一些重点媒体进行宣发呢&#xff1a; 精准锁定发布媒体 了解考核要求&#xff1a;仔细阅读宣传任务名单&#xff0c;了解…

C++初阶之list的使用和模拟以及反向迭代器的模拟实现

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 一.list简介 list是一个带头双向链表&#xff0c;在数据结构的时候…

不必追求深度,浅尝辄止为宜

近日笔者撰文称&#xff0c;有幸应《百度-百家号》相邀&#xff0c;在其发起的《征文任务》栏目中写作深度文章&#xff0c;便试着开头写了一篇《万科有“活下去”的可能性吗&#xff1f;》的时评文章&#xff0c;于5月3日发表&#xff0c;舆情反映不错&#xff0c;不到三天时间…

python菜鸟级安装手册

python安装教程 电脑-右键-属性&#xff0c;确认系统类型和版本号&#xff0c;比如本案例系统是64位 win10 点击python官网&#xff0c;进行下载 适用于 Windows 的 Python 版本 |Python.org 选择第一个安装程序64位即可满足需要&#xff0c; 嵌入式程序包是压缩包版本&…

JavaScript中的RegExp和Cookie

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f506;RegExp &#x1f3b2; 1 什么是正则表达式 &#x1f3b2;2 创建…

山东省文史书画研究会成立20周年系列活动徽标征集胜选名单公布

2024年5月1日&#xff0c;山东省文史书画研究会成立20周年系列活动徽标征集落下帷幕。征稿启事下发后&#xff0c;得到社会各界人士的广泛关注与参与&#xff0c;共收到设计方案608件。经过初评&#xff0c;选出5幅作品进入复评&#xff0c;并经过网络投票和专家投票相结合的方…

颗粒精炼剂可用于铝及铝合金熔铸工艺中 我国生产企业众多

颗粒精炼剂可用于铝及铝合金熔铸工艺中 我国生产企业众多 颗粒精炼剂指外观呈白色粉末状或颗粒状&#xff0c;可用于金属颗粒表面处理的重要化学药剂。颗粒精炼剂具有反应速度快、绿色环保、安全稳定性好等优势&#xff0c;在铝及铝合金的熔铸工艺中应用较多。按照钠含量不同&a…

有关string的部分接口

1.迭代器与反向迭代器(iterator-) 迭代器是可以用来访问string里面的内容的&#xff0c;这里来记录一下使用的方法。 里面用到了一个叫做begin函数和一个end函数&#xff0c;这两个都是针对string使用的函数。 s1.begin()函数是指向string内容的第一个元素 而s1.end()指向的则…

每日OJ题_贪心算法三②_力扣553. 最优除法

目录 力扣553. 最优除法 解析代码 力扣553. 最优除法 553. 最优除法 难度 中等 给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。例如&#xff0c; [2,3,4] -> 2 / 3 / 4 。 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值 "…

滑块验证码说明

滑块验证码说明 滑块验证码 旋转验证码 滑动还原验证码 文字点选验证码 快速上手 注意: 如果你项目是使用的Springboot&#xff0c; 请使用SpringBoot脚手架工具tianai-captcha-springboot-starter; 该工具对验证码进行了封装&#xff0c;使其使用更加方便快捷 后端说明 引…

深度学习之基于Matlab Googlenet网络男女性别识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着计算机视觉技术的快速发展&#xff0c;性别识别在多个领域中都展现出了广泛的应用前景&#xff…

【Unity】如何获得TMP Button下的text内容

【背景】 unity项目中使用了TMP命名空间的Button UI组件。脚本中需要获得Button下Text的内容,但是发现用TextMeshPro仍然无法获得button下的text对象。 【分析】 Hierarchy结构上看明确Button下是有Text组件的: 括号里是TMP,所以理论上用TextMeshPro类型去FindComponent…

“A”分考试经验分享:云计算HCIE考试请注意这几点...

大家好&#xff0c;我是誉天云计算HCIE的王同学&#xff0c;于4月2日"A"分通过了云计算3.0 HCIE的认证考试。 首先感谢誉天教育对我的辅导&#xff0c;感谢苗苗老师和石老师对我的帮助&#xff0c;通过这次考试让我对华为云计算有了一定的了解。接下来我就与大家分享…

GOG平台账号注册教程 内附GOG平台官网地址

GOG平台账号注册教程 内附GOG平台官网地址 GOG平台不知道大家听没听说过&#xff0c;该平台也是一款游戏平台&#xff0c;上面还是有着不少的游戏的&#xff0c;尤其是该平台的福利活动特别多&#xff0c;经常会免费发放一些游戏&#xff0c;这个7月份的话就有两款游戏现在是…

聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别

前言 有些小伙伴看到上一篇文章后&#xff0c;可能会发现中间件和我们之前讲的筛选器非常类似&#xff0c;比如它们都是通过 next 串起来的一系列的组件&#xff0c;并且都可以在请求处理前后执行代码&#xff0c;都可以通过不执行 next 来进行请求的终止。那么筛选器和中间件…

400G光模块产品最全分类解析

随着信息技术的迅猛发展&#xff0c;网络带宽需求不断增加&#xff0c;而400G光模块作为当前最热门的光通信技术之一&#xff0c;正在成为新一代网络的关键组成部分。本文将对400G光模块进行最全面的分类解析&#xff0c;以帮助大家深入了解其技术特点和应用场景。 一、ETU-LI…

轻松驾驭teamOS审批流程,权限提升秘诀:teamOS审批功能详解与实战指南

大家在日常办公时&#xff0c;是否有遇到过这样的情况&#xff1a;在进行协作的时候&#xff0c;需要在项目组中发布文档&#xff0c;但当前并没有这个权限。正常走审批流程&#xff0c;可能需要花费一定的时间。 teamOS&#xff0c;一键发起审批流程 在企业的日常运营中&…

FMEA助力智能电网升级:构建安全、高效、可靠的电力网络

随着科技的不断进步&#xff0c;智能电网已成为现代电力行业的重要发展方向。而在这个过程中&#xff0c;FMEA&#xff08;失效模式和影响分析&#xff09;作为一种重要的质量管理工具&#xff0c;正日益发挥着其在智能电网建设中的赋能作用。本文将从FMEA的基本概念出发&#…