Ngnix之反向代理、负载均衡、动静分离
目录
1. Ngnix
1.1 Linux系统Ngnix下载安装
1.2 反向代理
正向代理(Forward Proxy):
反向代理(Reverse Proxy):
1.3 负载均衡
1.4 动静分离
1. Ngnix
Nginx是一个高性能的开源Web服务器,它还可以用作反向代理、负载均衡器以及动静分离的工具。
1.1 Linux系统Ngnix下载安装
nginx: download
或
yum install -y wgetwget -c http://nginx.org/download/nginx-1.24.0.tar.gz
上传到服务器后:
#安装nginx所需要的依赖包
yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
#解压安装包
tar -zxvf nginx-1.24.0.tar.gz
#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx
#对nginx编译和安装
make & make install
进入到/usr/local/nginx/sbin/中
#启动,
./nginx
#停止
./nginx -s stop
#重载
./nginx -s reload
1.2 反向代理
正向代理和反向代理是两种不同的代理服务器配置,它们在作用方向和目的上有所不同。以下是它们的主要区别:
正向代理(Forward Proxy):
-
作用方向: 正向代理是在客户端和目标服务器之间的代理服务器。客户端向代理服务器发送请求,然后代理服务器将请求转发给目标服务器,并将目标服务器的响应返回给客户端。
-
隐藏客户端身份: 正向代理可以隐藏客户端的真实身份,因为目标服务器只知道代理服务器,而不知道最终的客户端。这可以用于绕过访问限制或保护客户端隐私。
反向代理(Reverse Proxy):
-
作用方向: 反向代理位于目标服务器和客户端之间。客户端向反向代理发送请求,然后反向代理将请求转发给一个或多个目标服务器,并将目标服务器的响应返回给客户端。
-
隐藏服务器身份: 反向代理可以隐藏后端服务器的真实身份,因为客户端只知道代理服务器,而不知道哪个后端服务器响应了请求。这有助于提高安全性和负载均衡。
-
负载均衡: 反向代理常用于分发客户端请求到多个后端服务器,实现负载均衡,确保各个服务器都能得到合理的负载。
总的来说,正向代理代表客户端与服务器通信,而反向代理代表服务器与客户端通信。正向代理隐藏客户端身份,而反向代理隐藏服务器身份。
反向代理到Tomcat 8080端口nginx.conf如下:
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://localhost:8080;root html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
1.3 负载均衡
负载均衡是通过将请求分发到多个服务器上,以实现更好的性能、可用性和可伸缩性。Nginx可以作为负载均衡器。
Nginx支持多种负载均衡算法,这些算法用于分发客户端请求到后端服务器,以实现负载均衡和提高系统的性能。以下是一些常见的负载均衡算法:
- 轮询算法(Round Robin): 每个新的请求按顺序分配给后端服务器列表中的下一个服务器。
- IP哈希算法(IP Hash):使用客户端的IP地址计算哈希值,然后将请求分发到后端服务器中的一个,使得相同IP的客户端每次请求都被分配到相同的服务器。
- 加权轮询算法(Weighted Round Robin): 给每个后端服务器分配一个权重,高权重的服务器获得更多的请求。
- 最小连接数算法(Least Connections): 将请求分发给当前连接数最少的后端服务器。
- 最短响应时间算法(Least Time):将请求分发给响应时间最短的后端服务器。
下面是使用轮询算法在两个Tomcat上负载均衡:
docker pull tomcat:8.0
docker run -d -p 9090:8080 --name tomcat01 tomcat:8.0
nginx.conf如下:
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;upstream myserver{server localhost:8080;server localhost:9090; } server {listen 80;server_name localhost;location / {proxy_pass http://myserver;root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
1.4 动静分离
动静分离是指将静态内容(如图片、CSS、JavaScript文件)和动态内容(如PHP、Python等生成的页面)分开处理,以提高性能和减轻服务器负担。Nginx可以通过简单的配置实现动静分离。
相关文章:

Ngnix之反向代理、负载均衡、动静分离
目录 1. Ngnix 1.1 Linux系统Ngnix下载安装 1.2 反向代理 正向代理(Forward Proxy): 反向代理(Reverse Proxy): 1.3 负载均衡 1.4 动静分离 1. Ngnix Nginx是一个高性能的开源Web服务器࿰…...

(C++)将x减到0的最小操作数--滑动窗口
个人主页:Lei宝啊 愿所有美好如期而遇 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://le…...

回答某位同学的问题:残差网络常用来分类,可以用于回归预测吗?
残差网络可以用于回归预测,以下是我的观点: 残差网络最初是用于计算机视觉和语音识别等分类任务,但它也可以用于回归预测。在回归预测任务中,我们预测的目标变量通常是一个连续值,而不是一个离散的类别。使用残差网络进行回归预测的主要思路是: 定义一个…...
C语言初学5:运算符
一、算数运算符 假设变量 A 的值为 10 运算符描述实例A先赋值后运算C A C为10 A为11A--C A-- C为10 A为9A先运算后赋值C A C为11 A为11--AC --A C为9 A为9 二、位运算符 运算符描述实例&对两个操作数的每一位执行逻辑与操作,如果两个相应的位都为 1&…...

亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471
1.漏洞概述 亿某通电子文档安全管理系统是一款电子文档安全防护软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产。亿赛通电子文档安全管理系统UploadFileFromClientServiceForClient接口处存在任意文件…...

产品入门第四讲:Axure动态面板
📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还…...
【数据结构】哈希表算法总结
知识概览(哈希表) 哈希表可以将一些值域较大的数映射到较小的空间内,通常用x mod 质数的方式进行映射。为什么用质数呢?这样的质数还要离2的整数幂尽量远。这可以从数学上证明,这样冲突最小。取余还是会出现冲突情况。…...

微信小程序单图上传和多图上传
图片上传主要用到 1、wx.chooseImage(Object object) 从本地相册选择图片或使用相机拍照。 参数 Object object 属性类型默认值必填说明countnumber9否最多可以选择的图片张数sizeTypeArray.<string>[original, compressed]否所选的图片的尺寸sourceTypeArray.<s…...
github入门基础操作
GitHub是一个基于Git版本控制系统的代码托管平台,它提供了一个方便的平台,让开发者可以在上面存储、管理和分享代码。如果你是一个开发者,那么学习如何使用GitHub是非常重要的,因为它可以帮助你更好地管理你的代码和协作开发。 在…...

Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述
一、Android Studio(3.6.2版本)安装 java2smali 插件 1、左上角File—>Setting,如下图 2、Setting界面中:点击Plugins—>选择右侧上方Marketplace—>搜索栏输入java2smali,如下图 3、点击Install按钮—>点…...

vscode使用remote ssh到server上 - Node进程吃满CPU
起因:Node进程吃满CPU 分析 我发现每次使用vscode的remote插件登陆到server后,就会出现node进程,不太清楚干什么用的,但是绝对和它有关。 查找原因 首先找到了这篇文章,解决了rg进程的问题: https://blo…...
如何在Go中使用日期和时间
引言 软件的设计是为了让工作更容易完成,对许多人来说,这包括与日期和时间进行交互。日期和时间值在现代软件中无处不在。例如,跟踪汽车何时需要服务并让车主知道,跟踪数据库中的变化以创建审计日志,或者只是比较一个时间和另一个时间来确定一个过程花费了多长时间。因此…...

2023_Spark_实验二十九:Flume配置KafkaSink
实验目的:掌握Flume采集数据发送到Kafka的方法 实验方法:通过配置Flume的KafkaSink采集数据到Kafka中 实验步骤: 一、明确日志采集方式 一般Flume采集日志source有两种方式: 1.Exec类型的Source 可以将命令产生的输出作为源&…...

Koa.js 入门手册:洋葱模型插件机制详解以及常用中间件
前言 Nodejs 提供了 http 能力,我们通过如下代码可以快速创建一个http server服务 const http require(http);http.createServer((req, res) > {res.write(hello\n);res.end();}).listen(3000);使用nodejs提供的原生能力启动一个http server并不麻烦ÿ…...

零信任 SASE 办公安全解决方案:提升企业网络安全与灵活性
零信任 SASE(Secure Access Service Edge)办公安全解决方案为企业带来了许多好处,相较于以前的解决方案有明显差异。这个方案的出现是为了应对企业面临的新的网络安全挑战和远程办公的需求。 1、统一的网络安全管理:SASE 将网络…...
【提示工程】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
解决问题 探索大语言模型解决推理问题的能力。从头训练或微调模型,需要创建大量的高质量含中间步骤的数据集,成本过大。 相关工作 1、使用中间步骤来解决推理问题 (1)使用自然语言通过一系列中间步骤解决数学应用题 ࿰…...

AWS解决方案架构师学习与备考
系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …...

如何搭建企业管理系统Odoo并远程访问管理界面【内网穿透】
文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…...
【Git】git常用问题汇总
1. gitlab如何打tag gitlab打tag的目的 git作为代码管理工具已经使用的越来越多了。而且一般开发人员在Dev分支下进行开发。但是当代码需要发布到测试环境时,需要将代码先合并到master,然后打个tag ,类似于SVN中tag处理。这样便于后期代码向…...

2024免费mac苹果电脑系统电脑管家CleanMyMac X
macOS已经成为最受欢迎的桌面操作系统之一,它提供了直观、简洁的用户界面,使用户可以轻松使用和管理系统。macOS拥有丰富的应用程序生态系统;还可以与其他苹果产品和服务紧密协作,如iPhone、iPad,用户可以通过iCloud同…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...