当前位置: 首页 > news >正文

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的负载均衡策略

  1. 轮询(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;}
}
  1. 权重(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;}
}
  1. 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;}
}
  1. 最少连接(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;}
}
  1. 随机(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;}
}
  1. 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 行点击事件&#xff1a;点了没反应&#xff1f; //监听行工具事件layui.table.on(tool(demo), function (obj) {//alert(222) });原因&#xff1a;检查下id与lay-filter是否一致&#xff1b;id与lay-filter必须一致。 <table id"demo" lay-filter"dem…...

【校招VIP】测试技术考点之单元测试集成测试

考点介绍&#xff1a; 单元测试,集成测试的区别是&#xff1a;方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…...

【Redis专题】Redis核心数据结构实战与高性能原理解析

目录 前言课程内容一、redis数据类型1.1 字符串&#xff08;string&#xff09;类型&#xff1a;比较简单的一种使用存储模型常用命令&#xff1a;&#xff08;截取自【菜鸟教程】&#xff09;部分演示应用场景 1.2 哈希&#xff08;hash&#xff09;类型&#xff1a;同类数据归…...

常见的几种排序算法

目录 一、插入排序 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:创造独特的互动体验

目前&#xff0c;动态贴纸、美颜SDK、增强现实&#xff08;AR&#xff09;等技术是比较热门的话题&#xff0c;它们所结合的新兴玩法更是收到大家推崇&#xff0c;正潜移默化的改变我们与数字世界互动的方式。 一、动态贴纸&#xff1a;个性化互动的开始 动态贴纸&#xff0c…...

〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇

✨ 目录 &#x1f388; 反推提示词 / Tagger&#x1f388; 反推提示词 Tagger 使用&#x1f388; 英文提示词自动补全 / Booru tag&#x1f388; 英文提示词自动补全 Booru tag 使用&#x1f388; 中文提示词自动补全 / tagcomplete&#x1f388; 中文提示词自动补全 tagcomple…...

如何实现响应式布局

要实现响应式布局&#xff0c;您可以采用以下方法&#xff1a; 视口设置&#xff1a; 在HTML的<head>部分中使用meta标签设置视口&#xff1a; <meta name"viewport" content"widthdevice-width, initial-scale1.0">使用百分比&#xff1a; 使…...

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个简单的操作

电脑作为现代生活中不可或缺的工具&#xff0c;我们通常会在工作或娱乐过程中使用它。但有时候&#xff0c;我们可能需要在一段时间后自动关机&#xff0c;例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢&#xff1f;为了满足这种需求&#xff0c;电脑提供了多种定时…...

Uboot指令与烧录

目录 1 NAND Flash&#xff1a; 1&#xff09;地址空间说明 2&#xff09;烧写u-boot 3&#xff09;烧写内核 4&#xff09;烧写文件系统 5&#xff09;设置启动参数 2 SPI Flash&#xff1a; 1&#xff09;地址空间说明 2&#xff09;烧写u-boot 3&#xff09;烧写内…...

Visual Studio中使用预编译头文件

预编译头文件&#xff08;Precompiled Header&#xff0c;PCH&#xff09;是一种C/C编译优化技术&#xff0c;用于提高大型项目的编译速度。PCH 文件包含了常用的头文件的预编译结果&#xff0c;它可以在编译其他源文件之前被加载到内存中&#xff0c;从而减少了重复的头文件解…...

C语言:选择+编程(每日一练Day15)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 题五&#xff1a; 编程题&#xff1a; 题一&#xff1a;寻找奇数 思路一&#xff1a; 题二&#xff1a;寻找峰值 思路一&#xff1a; 本人实力有限可能对一些地方解…...

确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构

我们在下载软件或镜像时会有很多版本&#xff0c;那需要根据我们的系统架构选择正确的软件或镜像版本。 要确定你的系统使用的是 x86-64&#xff08;amd64&#xff09; 还是 arm64 架构&#xff0c;可以使用以下方法之一&#xff1a; 使用 uname 命令&#xff1a; 打开终端&am…...

Python脚本

update_format.py 批量转视频格式&#xff0c;超级慢&#xff0c;没什么卵用 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&#xff0c;两边都是闭包&#xff0c;输出12345678910 for (i in 1..10) println(i)加上花括号也支持 for (i: Int in 1..10) {println(i)}另外&#xff0c;当对整数进行for循环时&#xff0c;Kotlin还提供了一个step函数来定义迭代的…...

AskIt: Unified Programming Interface for Programming with Large Language Models

本文是LLM系列文章&#xff0c;针对《AskIt: Unified Programming Interface for Programming with Large Language Models》的翻译。 AskIt&#xff1a;用于大型语言模型编程的统一编程接口 摘要1 引言2 动机例子3 设计与实现4 实验评估5 相关工作6 结论 摘要 在不断发展的软…...

TwicketSegmentedControl性能优化终极指南:内存管理与渲染技巧深度解析

TwicketSegmentedControl性能优化终极指南&#xff1a;内存管理与渲染技巧深度解析 【免费下载链接】TwicketSegmentedControl Custom UISegmentedControl replacement for iOS, written in Swift 项目地址: https://gitcode.com/gh_mirrors/tw/TwicketSegmentedControl …...

10个remote-browser最佳实践:提升自动化脚本性能

10个remote-browser最佳实践&#xff1a;提升自动化脚本性能 【免费下载链接】remote-browser A low-level browser automation framework built on top of the Web Extensions API standard. 项目地址: https://gitcode.com/gh_mirrors/re/remote-browser remote-brows…...

iOS自动化测试环境搭建:Xcode签名与WebDriverAgent配置全指南

1. 为什么iOS自动化测试环境比Android更让人头疼——从Xcode签名到WebDriverAgent的硬门槛AppiumPython实现iOS自动化测试~环境搭建&#xff0c;这短短十几个字背后&#xff0c;藏着绝大多数刚接触iOS自动化的新手在前三天反复重装系统、重启Mac、怀疑人生的真实写照。我带过六…...

Appium环境搭建实战手册:解决JDK、Android SDK与Node.js兼容性问题

1. 为什么Appium环境搭建总让人卡在第一步&#xff1f;——不是工具不行&#xff0c;是路径没走对“Appium环境搭好了吗&#xff1f;”这句话我过去三年在测试团队晨会里至少听过27次。不是新人问的&#xff0c;是干了五年自动化测试的老同事皱着眉甩出来的。他刚重装系统&…...

别再傻傻只用insmod了!Linux驱动加载,用modprobe才是真省心(附依赖问题解决全流程)

别再傻傻只用insmod了&#xff01;Linux驱动加载&#xff0c;用modprobe才是真省心&#xff08;附依赖问题解决全流程&#xff09; 你是否曾在深夜调试Linux驱动时&#xff0c;被insmod报出的"Unknown symbol"错误折磨到崩溃&#xff1f;明明已经编译好了驱动模块&am…...

硬件工程师,每天5分钟(5)——为什么 DDR5 最怕地不好?回流路径,才是高速设计真正的灵魂

讲透&#xff1a; 回流路径 为什么 Split Plane 最危险 为什么加地孔有时候能救命 为什么 GPS 会被 DDR 干扰 为什么 EMC 挂的根因常是地 &#x1f697;《硬件工程师&#xff0c;每天5分钟》第5篇 &#x1f525;《为什么 DDR5 最怕地不好&#xff1f;回流路径&#xff0c;才是高…...

GANsformer:用Transformer重构GAN判别与生成机制

1. 项目概述&#xff1a;当生成对抗网络遇上Transformer&#xff0c;不是简单拼接&#xff0c;而是架构级重构“Generative Adversarial Transformers: GANsformers Explained”这个标题一出来&#xff0c;很多做生成模型的老手第一反应是&#xff1a;“又一个蹭热点的命名游戏…...

农业信息智能化种植系统(10079)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

Unity接入Google Play Games完整避坑指南

1. 这不是“接个SDK”那么简单&#xff1a;为什么Unity项目接入Google Play Games常卡在第三步就崩了你肯定见过那种教程——标题写着“三分钟接入Google Play Games”&#xff0c;点进去第一行就是“下载插件、拖进Assets、调用PlayGamesPlatform.Activate()”&#xff0c;然后…...

Godot 4.3 RTS开发实战:事件驱动架构与指令队列优化

1. 这不是又一个“Hello World”教程&#xff1a;RTS游戏在Godot里到底难在哪&#xff1f;你点开过十几个“Godot RTS教程”&#xff0c;结果发现前两分钟还在画UI按钮&#xff0c;第三分钟就跳到“接下来我们用NavigationServer实现寻路”——然后卡住。你翻遍官方文档&#x…...