Nginx安装及配置负载均衡
文章目录
- 官网下载Nginx
- 解压安装
- 常用命令
- 配置负载均衡
- 七层负载均衡
- nginx的负载均衡语法
- nginx的负载均衡策略
- 故障下线和备份服务设置
- proxy_pass参数
官网下载Nginx
http://nginx.org/en/download.html
注:下载稳定版,即Stateable Version的,选择对应操作系统,我这里是Linux,就选择了 nginx-1.24.0
解压安装
tar -xvf nginx-1.24.0.tar
- 安装C++库和openssl等
yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
- 安装
顺序执行下列命令
./configure
make
make install
常用命令
./nginx -s stop #停止nginx
./nginx -s quit #安全退出
./nginx -s reload #修改了文件之后重新加载该程序文件
ps aux|grep nginx #查看nginx进程
sbin/nginx -c /conf/nginx.vonf #指定配置文件启动
配置负载均衡
七层负载均衡
nginx的负载均衡语法
http {upstream [你的负载均衡机制名称,随便设置一个就好] {server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];}server {listen [nginx监听端口];server_name [head中的host对应的值]location / {proxy_pass http:// [你的负载均衡机制名称,对应上面upstream的值];}}
}
nginx的负载均衡策略
- 轮询(Round Robin默认)
轮询是最常见的一种负载均衡策略。Nginx默认使用轮询策略,将请求按照顺序分配到每个服务器,当请求到达最后一个服务器后,再从第一个服务器继续轮询。,如果后端服务器挂了,则自动剔除。
upstream backend {server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
- 权重(Weighted Load Balancing)
指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况
upstream backend {server [ip地址]:[端口值] weight=3;server [ip地址]:[端口值] weight=2;server [ip地址]:[端口值] weight=1;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
- IP Hash
IP Hash是一种漂亮的负载均衡策略,具有Session保持的优点。算法的基本思路是通过对客户端的IP地址取Hash值,将此Hash值与服务器列表中的IP地址的Hash值进行比较,找到具有匹配Hash值的服务器。这样相同IP的请求总是被转发到同一台后端服务器处理,保证Session信息在同一台服务器上处理。
upstream backend {ip_hash; #使用IP hash策略server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
- 最少连接(Least Connections)
nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。
upstream backend {least_conn; #使用Least Connections策略server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
- 随机(Random)
Random会将请求随机发送到后端服务器上,这种策略比较简单,但是不保证对后端服务器的负载均衡性。
upstream backend {random; #使用Random策略server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
- URL Hash
URL Hash会根据请求的URL的Hash值来将请求发送到后端服务器。相同URL的请求总是被转发到同一台后端服务器处理,从而保证Session信息在同一台服务器上处理。
upstream backend {hash $request_uri; #使用URL Hash策略server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];server [ip地址]:[端口值];
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}
故障下线和备份服务设置
1.down
假如有一台主机是出了故障,或者下线了,要暂时移出,那可以把它标为down,表示请求是会略过这台主机的。
upstream downServer {server www.address1.com; # 或者ip+端口 , 不需要加入http/https前缀server www.address2.com down;
}
2.backup
backup是指备份的机器,相对于备份的机器来说,其他的机器就相当于主要服务器,只要当主要服务器不可用的时候,才会用到备用服务器。
upstream backupServer {server www.address1.com; # 或者ip+端口 , 不需要加入http/https前缀server www.address2.com backup;
}
3.max_fails和fail_timeout
默认情况下,max_fails的值为1,表示的是请求失败的次数,请求1次失败就换到下台主机。另外还有一个参数是fail_timeout,表示的是请求失败的超时时间,在设定的时间内没有成功,那作为失败处理。
upstream backupServer {server www.address1.com max_fails=2; # 或者ip+端口 , 不需要加入http/https前缀server www.address2.com backup;
}
proxy_pass参数
- proxy_set_header:设置反向代理向后端发送的http请求头信息,如添加host主机头部字段,让后端服务器能够获取到真实客户端的IP信息等
- client_body_buffer_size:指定客户端请求主体缓冲区大小
- proxy_connect_timeout:反向代理和后端节点连接的超时时间,也是建立握手后等待响应的时间
- proxy_send_timeout:表示代理后端服务器的数据回传时间,在规定时间内后端若数据未传完,nginx会断开连接
- proxy_read_timeout:设置Nginx从代理服务器获取数据的超时时间
- proxy_buffer:设置缓冲区的数量大小
相关文章:
Nginx安装及配置负载均衡
文章目录 官网下载Nginx解压安装常用命令配置负载均衡七层负载均衡nginx的负载均衡语法nginx的负载均衡策略故障下线和备份服务设置proxy_pass参数 官网下载Nginx http://nginx.org/en/download.html 注:下载稳定版,即Stateable Version的,…...
C# OpenCvSharp 通道分离
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions;namespac…...
oracle 自定义存储过程(非常简单明了)
语法说明 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN %TYPE, 参数2 IN %TYPE, 参数3 OUT %TYPE) IS 变量1 %TYPE; 变量2 %TYPE; BEGIN存储过程执行语句块 END 存储过程名字;举例说明 1.举一个简单的例子 定义存储过程 easyProcedure 入参为 两个数 出参为 他们的…...
layui--记录
layui 行点击事件:点了没反应? //监听行工具事件layui.table.on(tool(demo), function (obj) {//alert(222) });原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。 <table id"demo" lay-filter"dem…...
【校招VIP】测试技术考点之单元测试集成测试
考点介绍: 单元测试,集成测试的区别是:方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…...
【Redis专题】Redis核心数据结构实战与高性能原理解析
目录 前言课程内容一、redis数据类型1.1 字符串(string)类型:比较简单的一种使用存储模型常用命令:(截取自【菜鸟教程】)部分演示应用场景 1.2 哈希(hash)类型:同类数据归…...
常见的几种排序算法
目录 一、插入排序 1、直接插入排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、希尔排序 2.1、排序方法 2.2、图解分析 2.3、代码实现 二、选择排序 1、直接选择排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、堆排序 2.1、排序方法 2.2、图解分析 …...
动态贴纸、美颜SDK与AR:创造独特的互动体验
目前,动态贴纸、美颜SDK、增强现实(AR)等技术是比较热门的话题,它们所结合的新兴玩法更是收到大家推崇,正潜移默化的改变我们与数字世界互动的方式。 一、动态贴纸:个性化互动的开始 动态贴纸,…...
〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇
✨ 目录 🎈 反推提示词 / Tagger🎈 反推提示词 Tagger 使用🎈 英文提示词自动补全 / Booru tag🎈 英文提示词自动补全 Booru tag 使用🎈 中文提示词自动补全 / tagcomplete🎈 中文提示词自动补全 tagcomple…...
如何实现响应式布局
要实现响应式布局,您可以采用以下方法: 视口设置: 在HTML的<head>部分中使用meta标签设置视口: <meta name"viewport" content"widthdevice-width, initial-scale1.0">使用百分比: 使…...
HTML <tr> 标签
实例 一个简单的 HTML 表格,包含两行两列: <table border="1"><tr><th>Month</th><th>Savings</th></tr><tr><td>January</td><td>$100</td></tr> </table>定义和用法 &l…...
点云从入门到精通技术详解100篇-点云多尺度分类网络
目录 前言 研究现状与发展趋势 国内外研究现状 点云处理应用研究现状...
电脑怎么设置定时关机,2个简单的操作
电脑作为现代生活中不可或缺的工具,我们通常会在工作或娱乐过程中使用它。但有时候,我们可能需要在一段时间后自动关机,例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢?为了满足这种需求,电脑提供了多种定时…...
Uboot指令与烧录
目录 1 NAND Flash: 1)地址空间说明 2)烧写u-boot 3)烧写内核 4)烧写文件系统 5)设置启动参数 2 SPI Flash: 1)地址空间说明 2)烧写u-boot 3)烧写内…...
Visual Studio中使用预编译头文件
预编译头文件(Precompiled Header,PCH)是一种C/C编译优化技术,用于提高大型项目的编译速度。PCH 文件包含了常用的头文件的预编译结果,它可以在编译其他源文件之前被加载到内存中,从而减少了重复的头文件解…...
C语言:选择+编程(每日一练Day15)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:寻找奇数 思路一: 题二:寻找峰值 思路一: 本人实力有限可能对一些地方解…...
确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构
我们在下载软件或镜像时会有很多版本,那需要根据我们的系统架构选择正确的软件或镜像版本。 要确定你的系统使用的是 x86-64(amd64) 还是 arm64 架构,可以使用以下方法之一: 使用 uname 命令: 打开终端&am…...
Python脚本
update_format.py 批量转视频格式,超级慢,没什么卵用 import os import asyncio import subprocess import concurrent.futures import tracemalloctracemalloc.start()# 创建日志文件 log_file open(conversion_log.txt, w)async def convert_mkv_t…...
Kotlin的遍历方法
for循环 在下面代码中1…10表示的是1到10,两边都是闭包,输出12345678910 for (i in 1..10) println(i)加上花括号也支持 for (i: Int in 1..10) {println(i)}另外,当对整数进行for循环时,Kotlin还提供了一个step函数来定义迭代的…...
AskIt: Unified Programming Interface for Programming with Large Language Models
本文是LLM系列文章,针对《AskIt: Unified Programming Interface for Programming with Large Language Models》的翻译。 AskIt:用于大型语言模型编程的统一编程接口 摘要1 引言2 动机例子3 设计与实现4 实验评估5 相关工作6 结论 摘要 在不断发展的软…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
