nginx 反向代理 负载均衡 动静分离
一样东西的诞生通常都是为了解决某些问题,对于 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-gatewaycloud:gateway:routes:- id: gulimall_host_routeuri: lb://gulimall-productpredicates:- 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,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。
--不要用肉体的勤奋,去掩盖思考的懒惰--
相关文章:
nginx 反向代理 负载均衡 动静分离
一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。 比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问 但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多&a…...
Codeanalysis(tca)后端二次开发环境搭建
先试用官方脚本文件件quick_install.sh将整个项目启动起来,然后到每个微服务下查看每个服务的pid进程,需要调试哪个先把对应的微服务关闭手动启动,具体启动流程如下: cd 到项目根目录下 source script\config.sh # 激活系统环境…...
JS前端树形Tree数据结构使用
前端开发中会经常用到树形结构数据,如多级菜单、商品的多级分类等。数据库的设计和存储都是扁平结构,就会用到各种Tree树结构的转换操作,本文就尝试全面总结一下。 如下示例数据,关键字段id为唯一标识,pid为父级id&am…...
Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力
在9 月 19 日的Imagine 2023 大会上,智能自动化领域的领导者 Automation Anywhere 宣布对其自动化平台进行扩展。推出了新的 Responsible AI Layer,并宣布了四项关键产品更新,包括全新的 Autopilot,它可以利用生成式 AI ÿ…...
电缆隧道在线监测系统:提升电力设施安全与效率的关键
随着城市化进程的加快,电力电缆隧道在保障城市电力供应方面的地位日益重要。然而,电缆隧道环境复杂,容易受到多种因素影响,如温度、湿度、烟雾、水位等,严重威胁电力设施的安全与稳定运行。在此背景下,电缆…...
Java BigDecimal 详解
目录 一、BigDecimal 1、简介 2、构造器描述 3、方法描述 4、使用 一、BigDecimal float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它…...
简述信息论与采样定理
信息论 香农信息论发表于1948/1949年,它由三部分组成:信号采样、信源编码、信道编码; 信号采样:采样理论研究在何种条件下对连续信号进行采样,从而得到的离散型号可以可逆地恢复出采样前的连续信号。采样得到的离散实…...
网络安全之网站常见的攻击方式
这是作者自学的哈,不算课程内容。 网页中出现大量黑链 网站看着很正常,但是会隐藏一些链接。网页的链接几乎都是标签,这种黑链就是通过链接标签<a></a>或者script在里面链入恶意脚本,等待浏览者的访问,通…...
iOS Swift 拍照识别数字(Recognizing Text in Images)
可以用腾讯云 OCR的iOS demo - 腾讯云 苹果官方的解决方案(识别度太低) Recognizing Text in Images - apple developer Extracting phone numbers from text in images(Sample Code) - apple developer import UIKit import Visionclass ViewContro…...
数学建模:智能优化算法及其python实现
数学建模:智能优化算法及其python实现 智能优化算法简介差分进化算法(Differential Evolution,DE)遗传算法(Genetic Algorithm,GA)粒子群优化算法(Particle Swarm Optimization,PSO)模拟退火算法(Simulated Annealing,SA)蚁群算法(Ant Colony Optimization,ACO)…...
monkeyrunner环境搭建和初步用法
一、打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备。 用Elipse打开Android模拟器或在CMD中用Android命令打开模拟器。这里重点讲一下在CMD中用Android命令打开模拟器 命令:emulator -avd test (注…...
2024华为校招面试真题汇总及其解答(一)
1. 我问你点java基础的问题吧,你平时都用什么集合啊,都什么情况下使用 在 Java 中,常用的集合有以下几种: List:有序集合,可以重复,常用实现类有 ArrayList、LinkedList、Vector。Set:无序集合,不能重复,常用实现类有 HashSet、TreeSet。Map:键值对集合,键不能重复…...
css调整字体间距 以及让倾斜字体
调整字体间距 .element {letter-spacing: 2px; /* 调整为适当的值 */ }倾斜字体1 .element {font-style: italic; }请注意,不是所有的字体都有斜体样式可用。如果字体本身没有斜体版本,则可能无法实现完全的斜体效果。 倾斜字体2 <span class"…...
工具篇 | Gradle入门与使用指南 - 附Github仓库地址
介绍 1.1 什么是Gradle? Gradle是一个开源构建自动化工具,专为大型项目设计。它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序&#x…...
使用 Python 函数callable和isinstance的意义
一、说明 在这篇博客中,我们将探讨两个python函数:1 callable 中的函数及其有趣的应用程序。该callable函数用于检查对象是否可调用,这意味着它可以作为函数调用。2 isinstance这个内置函数允许我们比较两种不同的数据类型并确定它们是否相…...
Netty场景及其原理
Netty场景及其原理 Netty简化Java NIO的类库的使用,包括Selector、 ServerSocketChannel、 SocketChannel、ByteBuffer,解决了断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等。Netty拥有高性能、 吞吐量更高,延迟更低…...
Java接口和接口继承
Java接口和接口继承 接口 在抽象类中,抽象方法本质上是定义接口规范,即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。 如果一个抽象类没有字段,所有方法全部都是抽象方…...
2023 年解锁网络安全即服务
在当今快速发展的数字世界中,强大的网络安全机制的重要性怎么强调都不为过。对于越来越多地发现自己成为网络威胁焦点的小型企业来说尤其如此。 那么,“网络安全即服务”到底是什么?为什么它对小型企业至关重要? 网络安全即服务…...
python基于轻量级卷积神经网络模型GhostNet开发构建养殖场景下生猪行为识别系统
养殖业的数字化和智能化是一个综合应用了互联网、物联网、人工智能、大数据、云计算、区块链等数字技术的过程,旨在提高养殖效率、提升产品质量以及促进产业升级。在这个过程中,养殖生猪的数字化智能化可以识别并管理猪的行为。通过数字化智能化系统&…...
Selenium自动化测试 —— 通过cookie绕过验证码的操作!
验证码的处理 对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作 解决验证码的方法如下: 1、开发做个万能…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
