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” 在事件图表中添加如下节点 此时运行游戏可以发现当鼠标移动…...
FireRedASR Pro功能体验:支持MP3/M4A/FLAC等全格式音频
FireRedASR Pro功能体验:支持MP3/M4A/FLAC等全格式音频 1. 音频识别新体验:告别格式转换烦恼 作为一名经常需要处理会议录音的技术博主,我深知音频格式兼容性带来的痛苦。上周我收到了三份不同格式的采访录音:市场部发来的MP3、…...
别再死磕复杂模型了!用Python+NumPy手把手教你从卫星J2000坐标算出经纬度
从卫星J2000坐标到经纬度:Python实战指南 当拿到卫星的J2000坐标数据时,如何快速将其转换为可在地图上显示的经纬度?本文将用Python和NumPy带你一步步实现这个转换过程,避开复杂的理论推导,专注于代码实现和实际问题解…...
3分钟搞定Goods查询页:Map传参+StringUtils分割符实战(附避坑指南)
3分钟搞定商品查询页:Map传参与字符串分割的高效实践 商品查询功能作为电商系统的核心模块,其性能与用户体验直接影响转化率。本文将聚焦查询页开发中的两个关键技术点:Map传参优化与StringUtils分割技巧,通过可落地的代码示例&a…...
loadtest WebSocket测试全攻略:实时应用的性能验证方法
loadtest WebSocket测试全攻略:实时应用的性能验证方法 【免费下载链接】loadtest Runs a load test on the selected URL. Fast and easy to use. Can be integrated in your own workflow using the API. 项目地址: https://gitcode.com/gh_mirrors/lo/loadtest…...
RedisDesktopManager-Windows核心功能详解:数据库连接、键值管理与数据可视化
RedisDesktopManager-Windows核心功能详解:数据库连接、键值管理与数据可视化 【免费下载链接】RedisDesktopManager-Windows RedisDesktopManager Windows版本 项目地址: https://gitcode.com/gh_mirrors/re/RedisDesktopManager-Windows RedisDesktopManag…...
ComfyUI-Impact-Pack V8:从单体架构到模块化设计的演进之路
ComfyUI-Impact-Pack V8:从单体架构到模块化设计的演进之路 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: htt…...
用 SEONIB批量生成 SEO 博客来提升 Google 排名
用 SEONIB 批量生成 SEO 博客来提升 Google 排名,核心是:先用正确关键词+站内结构“打底”,再用 SEONIB 把这个结构规模化,最后用 Search Console 做数据反馈并持续优化。 下面是一套可以直接在团队里照着做的“SEONIB…...
手把手教你用Arduino和BLE键盘库打造智能音乐控制器(附完整代码)
手把手教你用Arduino和BLE键盘库打造智能音乐控制器(附完整代码) 在智能家居和物联网项目蓬勃发展的今天,将物理按键与数字媒体控制相结合的需求日益增长。想象一下,只需轻触一个实体按钮就能切换音乐、调节音量,甚至无…...
振动力学实战:如何用MATLAB模拟无阻尼多自由度系统的受迫振动(附完整代码)
振动力学实战:MATLAB频域分析全流程与工程避坑指南 当一座斜拉桥在特定风速下出现异常振动,或是精密仪器因环境微振动导致测量失准,背后往往隐藏着多自由度系统的动力学奥秘。作为机械与土木工程师,掌握无阻尼多自由度系统的频域分…...
WeReader:革新微信读书体验的高效笔记管理工具
WeReader:革新微信读书体验的高效笔记管理工具 【免费下载链接】wereader 一个浏览器扩展:主要用于微信读书做笔记,对常使用 Markdown 做笔记的读者比较有帮助。 项目地址: https://gitcode.com/gh_mirrors/wer/wereader 你是否曾为微…...
