nginx 反向代理 负载均衡 动静分离

news2024/11/28 5:41:44

一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。

比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问

但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多,并发量也慢慢增大,此时一台服务器已经满足不了网站的需求了。

你不能眼睁睁的看着你的“孩子”被压垮呀,于是乎,一咬牙又花钱加了几台服务器。

一、什么是Nginx

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:
在这里插入图片描述

其特点是占用内存少,并发能力强,运行还很文档,几乎可以做到7x24h不间断运行,即使运行数个月也不需要重启。而且,还能在服务不间断的情况下进行软件版本的升级。

Nginx代码完全用C语言编写,官方数据测试表明能够支持高达50000个并发连接数的响应。

反向代理

在这里插入图片描述
为了安全起见,一般我们不会将应用服务器内网地址暴露给外界,此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴露给外界使用,这样就屏蔽了内网服务器信息。例如:
在这里插入图片描述

正向代理:访问www.google.com 需要正向代理,访问的目的地不发生变化 

  • 首先在本机修改hosts文件
    路径为:C:\Windows\System32\drivers\etc\hosts
    添加以下内容:
# 192.168.152.160是远程Nginx服务器地址
192.168.152.160    gulimall.com

当客户端输入 gulimall.com时,通过本地域名映射规则,解析出Nginx服务器地址

  • 设置Nginx反向代理
    修改nginx.conf的server段
 listen 80;
 server_name  gulimall.com;
 location / { 
  #代理给内网服务地址   
  proxy_pass http://172.20.10.3:8000; #商品服务的地址
 }

这样,我们就实现了Nginx的反向代理,是不是很简单呢?

三、负载均衡

现在有好几台服务器了,也有代理服务器了。但是因为你预算有限,后加的几台服务器配置有高有底,这时候如果能让配置高的服务器多承担点压力,让配置低的少承担点压力就好了。

Nginx的负载均衡就可以完成这样的需求。

 在 conf.d 目录下创建 gulimall.conf       ---  操作 cp defaut.conf gulimall.conf

  gulimall.conf 配置文件如下

 listen 80;
 server_name  gulimall.com;
 location / { 
  #代理给内网服务地址   
  proxy_pass http://gulimall; #商品服务的地址
 }

  nginx.conf 配置文件如下  选择的默认负载均衡:轮询

upstream gulimall{
    server 172.20.10.3:88;
    server 172.20.10.3:89;
}

 网关的配置文件 application.yml文件如下

spring:
  application:
    name: gulimall-gateway

  cloud:
    gateway:
      routes:
        - id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
            - Host=gulimall.com,item.gulimall.com

四、动静分离

你的小网站里有些请求是需要后台处理的,但是有些请求是不需要的,比如 css、html、jpg、js等文件,这些统称为静态文件

Nginx可以根据一定规则把不变的资源和经常变的资源区分开,做好了拆分之后,我们就可以根据静态资源的特点将其做缓存操作,从而提高资源响应的速度。

  gulimall.conf 配置文件如下

location /static/ {
    root /usr/share/nginx/html;
}

把对应的静态文件放在/usr/share/nginx/html/即可

OK,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。

--不要用肉体的勤奋,去掩盖思考的懒惰--

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

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

相关文章

C#开发的OpenRA游戏之雷达地图

C#开发的OpenRA游戏之雷达地图 从前面的游戏里,就可以看到在上面按钮下面留有一个区域,这个区域的作用,就是用来显示一个雷达地图,如下图所示: 从雷达地图来看,可以清楚地看到全局的动态,自己的兵力分布,还有自己的建筑分布,矿产分布等等。 在这里就来对这个雷达地图…

Python编程:使用PIL进行JPEG图像压缩的简易教程

摘要: 本文介绍了如何使用Python编程语言和wxPython图形用户界面库进行JPEG图像的压缩。通过添加滑块控件,我们可以调整压缩质量,并将压缩后的照片另存为原来的名称加上后缀"压缩质量数字"的新文件。 C:\pythoncode\new\image2small.py 完整…

AI编程助手 Amazon CodeWhisperer 全面解析与实践

目录 引言Amazon CodeWhisperer简介智能编程助手智能代码建议代码自动补全 提升代码质量代码质量提升安全性检测 支持多平台多语言 用户体验和系统兼容性用户体验文档和学习资源个性化体验系统兼容性 功能全面性和代码质量功能全面性代码生成质量和代码安全性 CodeWhisperer的代…

程序启动-大数据平台搭建

1、启动zookeeper集群 /home/cluster/zookeeper.sh start /home/cluster/zookeeper.sh stop 2、启动hadoop和yarn集群 /home/cluster/hadoop-3.3.6/sbin/start-dfs.sh /home/cluster/hadoop-3.3.6/sbin/start-yarn.sh /home/cluster/hadoop-3.3.6/sbin/stop-dfs.sh /home/clust…

以太坊代币标准ERC20、ERC165、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…

预制菜行业数据分析(京东数据挖掘)

最近一段时间,关于预制菜进校园事件的讨论热度高涨。而这两天,核酸大王“张核子”转行开预制菜公司卖方便米饭的消息又被传出,直接让预制菜市场饱受关注。 “预制菜是近两年的风口”,这个结论鲸参谋早在以往的内容中专门讨论过&a…

Java 18的未来:新特性和编程实践

文章目录 引言新特性预览1. 基于值的类的进一步改进2. 模式匹配的增强3. 新的垃圾回收器4. 扩展的模块系统5. 更强大的异步编程 编程实践示例1:基于值的类示例2:模式匹配的增强示例3:新的垃圾回收器 结论 🎉欢迎来到Java学习路线专…

python机器学习融合模型:Stacking与Blending(附代码)

1 堆叠法Stacking 一套弱系统能变成一个强系统吗? 当你处在一个复杂的分类问题面前时,金融市场通常会出现这种情况,在搜索解决方案时可能会出现不同的方法。 虽然这些方法可以估计分类,但有时候它们都不比其他分类好。在这种情况…

[WUSTCTF2020]颜值成绩查询 布尔注入二分法

这道题很简单 就是sql注入 我们来学习一下如何写盲注脚本 ?stunum1 ?stunum123 正确回显 100 错误 显示 not 。。。 这里很显然就是盲注了 我们来写个语句查询 if(ascii(substr(database(),1,1))>1,1,0)发现回显了 我们可以开始编写脚本跑了 import requests impor…

DeepMind 利用无监督学习开发 AlphaMissense,预测 7100 万种基因突变

类基因组共有 31.6 亿个碱基对,无时无刻不在经历复制、转录和翻译,也随时有着出错突变的风险。 错义突变是基因突变中的一种常见形式,然而人类目前只观察到了其中的一小部分,能够解读的更是只有 0.1%。 准确预测错义突变的作用&am…

Windows10/11显示文件扩展名 修改文件后缀名教程

前言 写这篇文章的原因是由于我分享的教程中的文件、安装包基本都是存在阿里云盘的,下载后需要改后缀名才能使用。 但是好多同学不会改。。 Windows 10 随便打开一个文件夹,在上方工具栏点击 “查看”点击 “查看” 后下方会显示更详细的工具栏然后点…

剪映软件专业版的操作与使用,电脑版与手机版APP同步讲解

一、教程描述 什么是剪映?抖音官方推出的一款视频编辑工具,用于短视频的剪辑制作和在线发布,主要在手机端使用,同时支持PC端,操作简单易上手,功能也十分强大,使用过剪映的用户,都将…

ViT细节与代码解读

最近看到两篇解读ViT很好的文章,备忘记录一下: 先理解细节 1:再读VIT,还有多少细节是你不知道的 再理解代码 1:ViT源码阅读-PyTorch - 知乎

此芯科技加入百度飞桨硬件生态共创计划,加速端侧AI生态布局

近日,此芯科技(上海)有限公司(以下简称“此芯科技”)与百度签署硬件生态共创计划合作协议,正式加入由百度发起的硬件生态共创计划。双方将共同推动端侧AI和大模型在个人计算、车载计算以及元宇宙计算等领域…

Spring中是否可以存在两个相同ID的bean

文章目录 一、在同一个xml配置文件里配置两个相同ID的bean结论验证过程源码 二、在不同xml配置文件里配置两个相同ID的bean结论验证过程源码 三、在同一个配置类中以Bean方式添加两个名称相同的bean结论验证过程源码 四、在不同配置类中以Bean方式添加两个名称相同的bean结论验…

基础设施建设-企业级全栈测试平台的最佳实践

QECon(Quality Efficiency Conference)质量效能大会在上海正式开幕!本次大会以"数生智慧:高质量发展新引擎"为主题,深入探讨如何借助数字化和智能化技术推动软件质量的发展,为高质量经济发展提供…

华为云,让AI算力入山河

整个2023年,全球科技界都在为大模型沸腾。云计算产业作为AI大模型与产业场景间的最短路径,自然也在大模型浪潮中备受关注。目前阶段,云厂商已经纷纷入局大模型,从多个角度探索大模型带给云计算产业的可能性。 但我们往往会忽略这样…

【开发篇】八、SpringBoot整合MongoBD

文章目录 1、整合2、简单示例3、一点思考4、MongoDB的安装5、MongoDB的CRUD语法 1、整合 导入MongoBD的起步依赖:(这个starter背后是MongoDB的驱动和其他依赖,在这儿也可以看出命名的规律,redis的就是spring-boot-starter-data-r…

【数据结构-图】并查集

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

接口测试主要测试哪方面?需要哪些技能?要怎么学习?

1、什么是接口测试? 定义:测试系统组件间接口的一种测试。主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 目的&#x…