Nginx【反向代理负载均衡动静分离】--上

news2025/1/22 18:48:37

Nginx【反向代理负载均衡动静分离】–上

先看2 个实际需求,引出Nginx

需求1: 访问不同微服务

示意图

在这里插入图片描述

需求2: 轮询访问服务

示意图

在这里插入图片描述

解决方案: Nginx

  1. 反向代理

  2. 负载均衡

  3. 动静分离

高可用集群

  1. Nginx 在分布式微服务架构的位置

在这里插入图片描述

在这里插入图片描述

基本介绍

Nginx 是什么? 能干什么?

  1. 是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器

  2. 能干什么:反向代理负载均衡动静分离

  3. 牛逼之处:高性能,高负载有报告表明能支持高达50,000 个并发连接数

  4. 详细说明:https://lnmp.org/nginx.html

官方资料

  1. 官网:https://nginx.org/

  2. 使用文档:https://nginx.org/en/docs/

Nginx 核心功能

正向代理

一句话:如果我们要访问www.google.com 但是直接访问不到,则需要通过代理服务器来访问,这种代理服务就称为正向代理
在这里插入图片描述

图解

  1. 我们知道www.google.com , 但是访问不到
  2. 所以使用代理服务器帮助我们(即客户端)来上网, 注意帮助的对象是客户端, 这种代理,我们称为正向代理.
  3. 正向代理同时也隐藏了客户端信息.
  4. 再次说明,正向代理帮助的是客户端, 因此可以把客户端+正向代理服务, 视为一个整体

反向代理

一句话:客户端将请求发送到代理服务器,由代理服务器去选择目标服务器获取数据后,返回给客户端,这种代理方式为反向代理

一图胜千言

在这里插入图片描述

图解

  1. 项目设计者, 不希望客户端直接访问目标Web 服务器(比如目标Web 服务器是集群, 如果直接访问就会提供多个公网IP), 而是希望提供一个统一的访问IP, 这个是理解反向代理的前提,即为什么要反向代理.
  2. 反向代理帮助的对象是目标Web 服务器
  3. 当客户端请求达到反向代理服务后,由反向代理服务来决定如何访问目标Web 服务器(或者是哪个Web 服务器), 这个过程对客户端是透明的.
  4. 反向代理服务会暴露公共的IP, 只要能上网,就可以访问,但是对于反向代理服务器管理的/代理的Web 服务器通常是在局域网内,不能直接访问,只能通过反向代理来访问.
  5. 我们可以将反向代理服务+反向代理服务代理的Web 服务器视为一个整体
  6. 反向代理会屏蔽内网服务器(也就是他代理的服务)信息, 并实现负载均衡访问

负载均衡

一句话:当客户端向反向代理服务器(比如Nginx)发出请求,如果Nginx 代理了多个WEB 服务器(集群),Nginx 会将请求/负载分发到不同的服务器,也就是负载均衡

示意图

在这里插入图片描述

动静分离

一句话:为了加快网站的解析速度,可以把动态资源和静态资源由不同的服务器来解析,降低单个服务器的压力

传统的项目资源部署

– 示意图
在这里插入图片描述

动静分离项目资源部署

– 示意图

在这里插入图片描述

Nginx 下载&安装&启动

注意安装这里就不详细讲解了网上有许多优秀的教程

这理里就主要说一下要点和容易犯的错误

启动Nginx 可能的错误和解决方案

  1. 解决nginx 启动报错nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No suchfile or directory)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置防火墙,让Windows 访问Nginx

说明:默认情况下Windows 是不能访问Nginx , 因为防火墙是关闭80 端口的

具体配置

● 查看开放的端口号

firewall-cmd --list-all

在这里插入图片描述

● 设置开放的端口号

#firewall-cmd --add-service=http --permanent #增加了一个http 服务,理解
firewall-cmd --add-port=80/tcp --permanent

● 重启防火墙

firewall-cmd --reload

Nginx 命令行参数

指令说明

地址:https://nginx.org/en/docs/switches.html
在这里插入图片描述

使用演示

  1. 启动/usr/local/nginx/sbin/nginx -c nginx.conf
  2. 停止/usr/local/nginx/sbin/nginx -s stop
  3. 重新加载(不需要重启) /usr/local/nginx/sbin/nginx -s reload
  4. 查看版本/usr/local/nginx/sbin/nginx -v
  5. 查看版本、配置参数/usr/local/nginx/sbin/nginx -V

反向代理-快速入门

需求说明/图解

  1. 在浏览器输入www.hsp.com(windows), 可以访问到tomcat
  2. 使用Nginx 反向代理功能, 完成需求.

在这里插入图片描述

实现步骤

安装JDK , 在8 以上, 参考我Linux的javaee定制篇

安装步骤

  1. mkdir /opt/jdk
  2. 通过xftp6 上传到/opt/jdk 下
  3. cd /opt/jdk
  4. 解压tar -zxvf jdk-8u261-linux-x64.tar.gz
  1. mkdir /usr/local/java

  2. mv /opt/jdk/jdk1.8.0_261 /usr/local/java

  3. 配置环境变量的配置文件vim /etc/profile

  4. export JAVA_HOME=/usr/local/java/jdk1.8.0_261

    export PATH=$JAVA_HOME/bin:$PATH
    
  5. source /etc/profile [让新的环境变量生效]

测试是否安装成功

在这里插入图片描述

安装Tomcat

参考: 参考我Linux的javaee定制篇

步骤

1)上传安装文件,并解压缩到/opt/tomcat

2)进入解压目录/bin , 启动tomcat ./startup.sh

3)开放端口8080 , 回顾firewall-cmd

测试是否安装成功

在windows、Linux 下访问http://linuxip:8080

在这里插入图片描述

修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名
#127.0.0.1 www.mynews.com
127.0.0.1 localhost

修改安装目录\nginx.conf

在这里插入图片描述

小技巧: 如何查看nginx.conf 的配置错误

nginx -t #检测默认配置文件

在这里插入图片描述

nginx -t -c 配置文件#指定检测配置文件

在这里插入图片描述

完成测试

重启或者重新加载Nginx

windows 浏览器输入: http://www.自己设置的.com

在这里插入图片描述

注意事项和细节

Nginx 对外提供访问入口,充当反向代理服务器,Tomcat 的端口就无需对外暴露-测试一把

开启和关闭防火墙的端口

● 以8080 端口为例,关闭8080 端口

firewall-cmd --remove-port=8080/tcp --permanent
firewall-cmd --reload

● 以8080 端口为例,开放8080 端口

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

● 查看防火墙状态

firewall-cmd --list-all

反向代理配置-Location 实例

– 效果示意图

在这里插入图片描述

反向代理配置-思路分析/图解

在这里插入图片描述

Location 语法规则

解读1-location 语法规则

因为太长了单独发

解读2-nginx 的location 解析过程

参考: https://blog.huati365.com/89af5ae5a56d1b96
在这里插入图片描述

实现步骤

修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名

192.168.12.134 www.自己的.com

192.168.12.134 www.自己的.com

修改安装目录\nginx.conf

在这里插入图片描述

在Linux 的Tomcat 创建webapps\product\hi.html

<h1>product service linux tomcat </h1>

在windows 的Tomcat 创建webapps\member\hi.html

linux 防火墙打开10000 端口

保证linux 可以访问Windows Tomcat 【即:可以访问Windows 的8080 端口, 可暂时关闭windows 防火墙,测完恢复】

完成测试

  1. 确保启动Linux 下的Tomcat

  2. 确保启动Windows 下的Tomcat

  3. 重启或者重新加载Nginx

  4. windows 浏览器输入[注意带上端口]:

    http://www.hspmall.com:10000/product/hi.html

    http://www.hspmall.com:10000/member/hi.html

在这里插入图片描述

这里就演示这一种 还有很多不同的可以自行去玩一下

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

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

相关文章

solr快速上手:配置IK中文分词器(七)

0. 引言 solr作为搜索引擎&#xff0c;常用在我们对于搜索速度有较高要求且大数据量的业务场景&#xff0c;我们之前已经配置过英文分词器&#xff0c;但是针对中文分词不够灵活和实用&#xff0c;要实现真正意义上的中文分词&#xff0c;还需要单独安装中文分词器 solr快速上…

【shell 基础13】输入输出与重定向

文章目录 一. 标准输入和标准输出二、重定向1. 定义2. 输出的重定向3. 对标准错误输出重定向4. 输入的重定向 一. 标准输入和标准输出 linux中有三种标准输入输出&#xff0c;分别是STDIN&#xff0c;STDOUT&#xff0c;STDERR&#xff0c;文件描述符分别是 0、1、2。 当运行…

Android Paging3分页+ConcatAdapter+空数据视图+下拉刷新(SwipeRefreshLayout)+加载更多+错误重试 (示例)

文章目录 引入库数据模型定义分页 adapter加载更多 adapter空数据 adapter分页数据源ViewModel 提供加载数据源的方法结合以上实现的 Fragment数据重复问题 引入库 implementation androidx.paging:paging-runtime-ktx:3.1.1paging 库&#xff0c;目前还是有点小bug &#xff…

Java开发技巧-数据结构-使用HashSet判断主键是否存在、使用Pair成对结果返回/Triple三个对象返回

场景 Java中使用HashSet判断主键是否存在 HashSet实现Set接口&#xff0c;由哈希表&#xff08;实际上是HashMap&#xff09;实现&#xff0c;但不保证set的迭代顺序&#xff0c;并允许使用null元素。 HashSet的时间复杂度跟HashMap一致&#xff0c;如果没有哈希冲突则时间复…

EXCEL函数笔记1(数学函数、文本函数、日期函数)

数学函数 取整&#xff1a;INT(number) 取余&#xff1a;MOD(number,除数) 四舍五入&#xff1a;ROUND(number&#xff0c;保留几位小数) 取绝对值&#xff1a;ABS(number) 根号处理&#xff1a;SQRT&#xff08;number&#xff09; 0到1随机数&#xff1a;RAND&#xff08;&am…

Python神器Anaconda图文安装教程

来源&#xff1a;投稿 作者&#xff1a;Fairy 编辑&#xff1a;学姐 Anaconda简介 Anaconda是一种数据科学和机器学习的开发环境&#xff0c;它包含了大量的Python包、工具和库&#xff0c;以及可视化界面和集成开发环境。「Anaconda可以方便地管理Python环境和安装第三方软件…

⑧电子产品拆解分析-1拖4USB拓展坞

⑧电子产品拆解分析-1拖4USB拓展坞 一、功能介绍二、电路分析以及器件作用1、内部电路拆解 三、参考资料学习 一、功能介绍 ①USB2.0一拖四通讯&#xff1b;②具备OTG功能&#xff0c;可适配大部分USB接口设备&#xff1b; 二、电路分析以及器件作用 1、内部电路拆解 分析&am…

【分布式存储】聊一下分布式存储中分片机制

为什么需要分片 在服务端领域&#xff0c;主要特点是支撑7*24小时不间断的服务&#xff0c;而最终对各种行为会生产对应的数据&#xff0c;比如用户登陆/注册&#xff0c;发起订单交易、支付、身份验证&#xff0c;短信验证等情况都需要存储起来&#xff0c;其中包括各种各样的…

浏览器工作原理分析与首屏加载

正文 1. 页面加载时间线 我们先来一个老生常谈的面试题&#xff1a;从输入 URL 到页面加载完成的过程中都发生了什么事情&#xff1f; 这个面试题本身也是一个开放题&#xff0c;不同方向的工程师侧重也不一样。大抵的过程可以简化为&#xff1a; st>start: 输入URL e>…

WPS表格处理

wps表格中公式出来的内容如何转为纯文本 选中公式算出的结果区域&#xff0c;复制&#xff0c;在原区域上右键&#xff0c;选择性粘贴为数值&#xff0c;就转成文本了&#xff0c;当然公式也就消除了。 wps表格如何设置整列公式&#xff1f; 1、先来看看下面这个例子需做出商…

图像分割算法

文章目录 前言1. 基于区域的分割方法1.1 区域生长算法1.2 区域分裂合并算法1.3 分水岭算法1.3.1 分水岭算法原理1.3.2 opencv-python中分水岭算法的应用 2. 基于图的分割方法2.1 Grabcut图像分割 源码仓库地址 前言 图像分割是指将图像分成若干互不重叠的子区域&#xff0c;使…

如何卸载MySQL数据库以及删除所有有关信息

目录 前言 第一步 卸载mysql程序 第二步 删除安装目录的mysql项目 第三步 删除MySQL的相关注册表 第四步 删除C盘下的 C:\ProgramData\MySQL所有的文件 第五步 删除 C:\Documents and Settings\All Users\Application Data\MySQL 下的文件夹 第六步 重启电脑 尾语 前言…

使用crictl pull时报错:“unknown service runtime.v1alpha2.ImageService”

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 引言&#xff1a; crictl 是 kubernetes cri-tools 的一部分&#xff0c;是专门为 kubernetes 使用 …

【详解】String、StringBuffer、StringBuilder的基本用法及区别

一、String 1.常用的输入方式 Scanner in new Scanner&#xff08;System.in&#xff09;; //输入方法一 String s1 in.next(); //in.next(): 读到空格就停止扫描&#xff08;输入&#xff09;。//输入方法二 String s2 in.nextLine(); //in.nextLine():读到回车就停止扫描…

Avalon 学习系列 (一) —— 初步入门

相关链接 Avalon github地址 Avalon 快速入门 基于 Avalon的组件库-OniUI Avalon 入门教程 Avalon CDN 简介 Avalon 是司徒正美开发和维护的一款基于虚拟 DOM 与属性劫持的迷你、 易用、 高性能 的 前端 MVVM 框架&#xff0c;最早发布于2012.09.15。 其拥有超优秀的兼容性&a…

Python中的模块包第三方库详解

模块&包 模块 一个.py文件就是一个模块&#xff0c;里面是一些函数和变量&#xff0c;需要的时候可以导入。 模块命名规范: 1.以英文开头&#xff0c;不出现中文 2.模块名不应与系统内置函数重名 包 包本身就是一个文件夹&#xff0c;如果文件夹内有__init__.py文件&…

浅谈iic时序

一、iic通信核心要点 在iic通信中&#xff0c;进行数据传输的时候&#xff0c;遵循在scl时钟线高的时候保持sda电平稳定&#xff0c;这个电平值就是要写入的值&#xff0c;然后&#xff0c;在scl时钟线拉低的时候去改变sda上的值&#xff0c;达到自己想要输出的值 所以说&…

如何做架构设计

1、设计很重要 我们可以看一下周边的事物&#xff0c;那些好的东西&#xff0c;他们并不会天然存在&#xff0c;都是被设计出来的&#xff0c;因此设计就是创造和改善事物的重要过程。设计的重要之处在于&#xff0c;最初的设计往往决定最终的结果&#xff0c;甚至决定着事物的…

端口扫描伪装技术实践

端口扫描伪装技术实践 1.-f&#xff08;分段传输&#xff09;2.-mtu&#xff08;使用指定的MTU&#xff09;3.-D&#xff08;使用诱饵主机隐蔽扫描&#xff09;4.--source-port&#xff08;源端口欺骗&#xff09;5.--data-length &#xff08;发送报文时附加随机数据&#xff…

入职字节外包一个月,我离职了····

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…