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.hqwc.cn/news/675615.html

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

相关文章

数据结构-线性表-应用题-2.2-13

1)使用一个用于标记的数组B[n], B的下标也就是括号里的值对应正整数,B[n]对应的值用来标记是否已经出现过,1表示出现,0则未出现,B[0]对应正整数1,B[n-1]对应正整数n,从A[0]开始遍历A,若能查找到第一个满足B…

STM32单片机ADC功能详解

文章目录 1. ADC概述 2. ADC结构图 3. 引脚定义 4. 转换模式 5. 数据对齐 6. 转换时间 7. 硬件电路 8. STM32使用ADC单/多通道检测数据 1. ADC概述 功能:ADC是一个将模拟信号(如电压)转换为数字信号的设备。在微控制器中&#xff0c…

C语言——联合体和枚举

1. 联合体 联合体和结构体类似。 联合体类型的声明: 联合体的特点: 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以是不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀…

WIFI模块UDP电脑端调试

一,两端都是电脑端 1,电脑本机的IP地址 192.168.137.1 2,新建两个不同的连接,注意端口 二,WIFI 模块和电脑端连接 1,设置模块端目标IP和端口,电脑端只接收数据的话,IP、端口可随…

如何使用SkyWalking收集分析分布式系统的追踪数据

Apache SkyWalking 是一个开源的观测性工具,用于收集、分析和展示分布式系统的追踪数据。SkyWalking 支持多种语言的追踪,包括但不限于 Java、.NET、Node.js 等。以下是使用 SkyWalking 工具实现数据采集的详细步骤: 1. 下载和安装 SkyWalkin…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分,且大部分出在选择题,填空最多一两个 (仅供参考) 第十章 (理解概念为主,无需看推导过程) 第十一章

Linux——mysql运维篇

回顾基本语句: 数据定义语言 ( DDL ) 。这类语言用于定义和修改数据库的结构,包括创建、删除和修改数据库、表、视图和索引等对象。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 、 RENAME 、 TRUNCATE 等。 create database 数据库 &…

LINUX 入门 6

LINUX 入门 6 day10 20240505 耗时:41min day10 20240506 耗时:155min 课程链接地址 第6章 DNS协议与请求 1 DNS协议分析与项目介绍 自己去看教程 快速扫了一下,还是结合实践去看概念有感觉 回答以下几个问题: dns作用dns分层…

全国各地区劳动力流动、外出务工劳动力数、总劳动力数(2006-2021年)

01、数据简介 劳动力流动是指劳动力在不同地区、行业、职业、岗位之间的流动。它是劳动力市场运行的重要特征,也是实现劳动力资源优化配置的必要条件。劳动力流动可以促进劳动力资源的优化配置,提高劳动生产率和经济效益。据名称:全国各地区…

探索Baidu Comate:编程世界中的新利器

文章目录 Baidu Comate 介绍Baidu Comate的优势Baidu Comate安装过程Baidu Comate实战演练代码调优代码解释代码生成注释生成 总结 Baidu Comate 介绍 随着GPT的大火,衍生了各种AI工具,这些AI工具遍布在各行业各领域中,有AI写作、AI办公、AI…

时间复杂度与空间复杂度(上篇)

目录 前言时间复杂度 前言 算法在运行的过程中要消耗时间资源和空间资源 所以衡量一个算法的好坏要看空间复杂度和时间复杂度, 时间复杂度衡量一个算法的运行快慢 空间复杂度是一个算法运行所需要的额外的空间 一个算法中我们更关心的是时间复杂度 时间复杂度 时…

【CTF Web】攻防世界 GFSJ0478 cookie Writeup(HTTP协议+信息收集+Cookie)

cookie X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’ 解法 按 F12,点击网络。 刷新页面。查看请求头中的 Cookie。 look-herecookie.php访问: http://61.147.171.105:53668/cookie.…