nginx反向代理及负载均衡的实现
目录
1.nginx反向代理
2.nginx负载均衡
3.nginx反向代理及负载均衡实现
nginx反向代理
4台主机都需要的操作:
两台服务器操作:
两台主机服务器进行测试;
nginx负载均衡配置
4.nginx配置其他参数
多虚拟机访问
后端服务器日志中需要记录客户端真实ip
nginx设置不同的url访问不同页面,可以实现动静分离
在代理主机上设置:
在web服务器上:
测试:
5.nginx的upstream其他参数
backup:
down:
1.nginx反向代理
原理:客户端向反向代理服务器发送请求,反向代理服务器将请求发送给相应服务器,然后服务器收到并将响应返回给反向代理服务器,由反向代理服务器将响应返回给客户端。
优点:1.可以有效防止对服务器的恶意攻击。2.减少服务器的压力。3.提高访问速度。
2.nginx负载均衡
负载均衡:防止一台服务器宕机之后,业务出现阻断。
优点:减少服务器压力,解决某时刻高并发。
3.nginx反向代理及负载均衡实现
nginx反向代理
配置准备4台主机,并在5台主机,4台上都安装nginx,另外一台客户端
4台主机都需要的操作:
检查防火墙与selinux
1.安装epel扩展源
yum install -y epel-release2.安装nginx
yum install -y nginx
两台服务器操作:
配置虚拟主机
1.vim /etc/nginx/conf.d/vhost.conf
server {listen 80;server_name bbs.yunjisuan.com;location / {root /usr/share/nginx/html/bbs;index index.html index.htm;}
access_log /usr/share/nginx/html/www/logs/access_www.log main; 这两个日志目录需要自己创建
}
server {listen 80;server_name www.yunjisuan.com;location / {root /usr/share/nginx/html/www;index index.html index.htm;}
access_log /usr/share/nginx/html/bbs/logs/access_bbs.log main;
}2.配置网页页面
mkdir -pv /usr/share/nginx/html/{bbs,www}
切到不同目录配置页面即可
echo "this is $HOSTNAME bbs" > index.html3.重启nginx服务
两台主机服务器进行测试;
curl -H host:bbs.yunjisuan.com 192.168.27.12
curl -H host:bbs.yunjisuan.com 192.168.27.122
curl -H host:bbs.yunjisuan.com 192.168.27.123
curl -H host:www.yunjisuan.com 192.168.27.123
curl -H host:www.yunjisuan.com 192.168.27.122
nginx负载均衡配置
负载均衡需要在两台不是服务器的主机上操作
负载均衡的关键段是upstream(定义转发池)porxy_pass (指定转发)
两台主机:
1.编写额外配置文件
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf
upstream www_server_pools {server 192.168.27.122:80 weight=2; 定义转发找这两个服务器server 192.168.27.123:80 weight=1;
}
server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools; 当访问网址时,转发到这个转发池
}
}
server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;}
}
2.重新启动
3.在客户端配置hosts解析文件
vim /etc/hosts
代理主机 www.yunjisuan.com bbs.yunjisuan.com
4.客户端进行测试
for ((i=1;i<=10;i++));do curl http://bbs.yunjisuan.com; done
4.nginx配置其他参数
多虚拟机访问
当配置好负载均衡后,访问bbs可能出现的页面还是www,是因为没有找到对应的请求头部信息。
配置:
1.在代理主机上配置
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf
upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;
}
server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host; 定义这一行}
}
server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;}
}
后端服务器日志中需要记录客户端真实ip
默认不会再服务器中记录客户端真实ip,只会记录代理主机,所以开启相应参数,记录客户端真实ip。
在代理主机进行操作
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf
upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;
}
server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}
}重启并测试
nginx设置不同的url访问不同页面,可以实现动静分离
在代理主机上设置:
vim /etc/nginx/conf.d/vhosts.conf
upstream static_pools { 定义不同的转发池server 192.168.27.122:80;
}
upstream active_pools {server 192.168.27.123:80;
}
server {listen 80;server_name www.yunjisuan.com;location /static/ {proxy_pass http://static_pools;proxy_set_header Host $host;
}location /active/ {proxy_pass http://active_pools;proxy_set_header Host $host;}}重启
在web服务器上:
两台服务器都可以操作
1.将之前的虚拟主机停到改一下后缀名称
2.配置不同页面
cd /usr/share/nginx/html/
mkdir static
cd static/
echo "this is static" > index.html
cd ..
mkdir active
echo "this is active" > index.html重启
测试:
curl http://www.yunjisuan.com/active/
curl http://www.yunjisuan.com/static/ 一定要带最后面的/
5.nginx的upstream其他参数
backup:
当所有服务器宕机之后,会去寻找配置了backup的页面
upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;server 192.168.27.120:80 backup;
}
down:
配置之后,会将会话保持:
upstream www_server_pools {ip_hash;server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;}
注意:backup和ip_hash不可以同时使用。
相关文章:
nginx反向代理及负载均衡的实现
目录 1.nginx反向代理 2.nginx负载均衡 3.nginx反向代理及负载均衡实现 nginx反向代理 4台主机都需要的操作: 两台服务器操作: 两台主机服务器进行测试; nginx负载均衡配置 4.nginx配置其他参数 多虚拟机访问 后端服务器日志中需要…...
Tomcat部署SpringBoot项目
1.修改打包方式 pom.xml 里 加上 <packaging>war</packaging>2.移除内嵌的Tomcat <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope…...
Oracle笔记--dblink
概述 1、database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。 2、在创建database link的时候,Ora…...
Mapbox加载天地图CGCS2000矢量瓦片地图
1.背景 最近在做天地图的项目,要基于MapBox添加CGCS2000矢量切片数据,但是 Mapbox 只支持web 墨卡托(3857)坐标系的数据。Github有专业用户修改了mapbox-gl的相关代码,支持CGCS2000的切片数据加载,并且修改…...
day3 STM32 GPIO口介绍
GPIO接口简介 通用输入输出接口GPIO是嵌入式系统、单片机开发过程最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使…...
【ElasticSearch】ElasticSearch 内存设置原则
由于ES构建基于lucene,而lucene设计强大之处在于lucene能够很好的利用操作系统内存来缓存索引数据,以提供快速的查询性能。lucene的索引文件segements是存储在单文件中的,并且不可变,对于OS来说,能够很友好地将索引文件保持在cach…...
VUE+ElementUI的表单验证二选一必填项,并且满足条件后清除表单验证提示
上代码 <el-form-item label"出库单号" prop"ecode" ref"ecode" :rules"rules.ecode"><el-input v-model"queryParams.ecode" placeholder"出库单号和出库箱号至少填写一项" clearable style"width…...
NLP 时事和见解【2023】
一、说明 AI的新闻当然不是即时的,但作为趋势和苗头,我们不得不做出自己的决定。比如,一些软件的支持是否持续,哪些现成的软件将不再使用,等等。 图片来自中途 以下是NLPlanet为您选择的有关NLP和AI的每周文章&#x…...
Windows 环境下 Python3 离线安装 cryptography 失败
发布Flask Web项目时,报错缺少Cryptography,于是尝试重新安装该库,但本机没有网络,只支持手动离线安装,尝试了pip、setup.py两种方式安装,结果都报错。。最后使用将安装包拷贝至本机(在其他电脑上安装的sit…...
年轻代频繁GC ParNew导致http变慢
背景介绍 某日下午大约四点多,接到合作方消息,线上环境,我这边维护的某http服务突然大量超时(对方超时时间设置为300ms),我迅速到鹰眼平台开启采样,发现该服务平均QPS到了120左右,平…...
在.NET 6.0中自定义接口路由
在本文中,我们将讨论ASP.NET Core中的新路由。我们将了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何创建自己的路由。 本文主题: 探索接口路由创建自定义接口创建更复杂的接口 名词定义&#…...
Kotlin读写分离CopyOnWriteArrayList
Kotlin读写分离CopyOnWriteArrayList 基于读写分离思想Copy-On-Write(COW)设计的线程安全ArrayList变体,读读共享、写写互斥、读写互斥、写读互斥。读时直接读,不用加锁同步,线程安全。写/删/修改数据时复制一个副本,在新的List副…...
centos自动同步北京时间
1、安装ntpdate服务 yum -y install ntpdate 2、加入自动任务计划 查找ntpdate的路径: which ntpdate 复制这个路径。 编辑自动任务计划并加入ntpdate: crontab -e # 每小时第30分钟同步AD域控时间 30 * * * * /usr/sbin/ntpdate -u 192.168.2.8 > …...
element-ui表格跨页多选实现
前言 在我们日常项目开发中,经常会有表格跨页多选的需求,接下来让我们用 el-table 示例一步步来实现这个需求。 动手开发 在线体验 https://codesandbox.io/s/priceless-mcclintock-4cp7x3?file/src/App.vue 常规版本 本部分只写了一些重点代码,心急的彦祖可以直接看 性…...
线性代数(三) 线性方程组向量空间
前言 如何利用行列式,矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组:Ax0;非齐次线性方程组:Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…...
学习跨度级交互以提取方面情感三元组
方面情感三元组 方面情感三元组(Aspect Sentiment Triplet)是一种在情感分析中使用的结构,它包含三个部分:方面目标(Aspect Target)、情感(Sentiment)和对应的观点词(Op…...
那些年的Xposed开发经验记录
把之前写的Xposed相关文章合并到一块,方便查阅 目录 多进程App的Hook问题XposedHelper中的静态变量demo的AndroidManifest.xml的测试核心代码结论限制handleLoadPackage被单个进程多次执行的问题 多dex Hook问题为应用增加权限利用Xposed删除权限参考 Hook框架集锦…...
android studio内存分析之Memory profiler的使用
目录 Android Studio中内存分析工具Memory profiler的使用1. 打开Memory Profiler2. 工具使用3. 内存选项说明4. 内存性能分析器概览5. 内存计算方式6. 查看内存分配7. 捕获java/kotlin方式查看内存分配8. 堆转储文件导入和导出 内存性能分析器中的泄漏检测 Android Studio中内…...
Qt下载慢/无法下载解决方式
文章目录 一. Qt在线安装下载二. 安装方式 一. Qt在线安装下载 官网下载:https://www.qt.io/download清华源下载:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 二. 安装方式 进入下载好的目录 在目录栏输入CMD&…...
【UE4 RTS】04-Camera Pan
前言 本篇实现了CameraPawn的旋转功能。 效果 步骤 1. 打开项目设置,添加两个操作映射 2. 打开玩家控制器“RTS_PlayerController_BP”,新建一个浮点型变量,命名为“PanSpeed” 在事件图表中添加如下节点 此时运行游戏可以发现当鼠标移动…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
