NGINX 中配置负载均衡器

news/2024/9/16 21:16:25/ 标签: nginx, 负载均衡, php, 运维

        Nginx 提供了多种负载均衡策略,如轮询(Round Robin)、最少连接数(Least Connections)、IP 哈希(IP Hash)等。这里以轮询策略为例进行配置。

1. 准备工作

假设你有以下几台 PHP 服务器:

  • 192.168.1.101 (PHP Server 1)
  • 192.168.1.102 (PHP Server 2)
  • 192.168.1.103 (PHP Server 3)

NGINX 服务器会作为反向代理,负责将流量分发到这些 PHP 服务器上。

2. 配置 NGINX

  1. 编辑 NGINX 配置文件

    打开 NGINX 配置文件进行编辑,通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf,也可能是其他配置文件。

    sudo nano /etc/nginx/nginx.conf
  2. 定义上游服务器

    在配置文件中,使用 upstream 指令定义你的 PHP 服务器池。你可以在 http 块中添加以下配置:

    http {upstream php_servers {server 192.168.1.101;server 192.168.1.102;server 192.168.1.103;}server {listen 80;server_name yourdomain.com;location / {proxy_pass http://php_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 其他配置}
    }
    

    这里,php_servers 是你定义的服务器组名称,proxy_pass 将请求转发到这个服务器组。Nginx 会默认使用轮询策略将请求分配到这些服务器上。

  3. 配置负载均衡策略(可选)

    你可以根据需求选择不同的负载均衡策略:

    • 轮询(默认):不需要额外配置,Nginx 会按顺序将请求分配到每个服务器。

    • 最少连接数:将请求发送到当前连接数最少的服务器。

      http {upstream php_servers {server 192.168.1.101;server 192.168.1.102;server 192.168.1.103;}server {listen 80;server_name yourdomain.com;location / {proxy_pass http://php_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 其他配置}
      }
      

    • IP 哈希:根据客户端 IP 分配请求,同一个 IP 的请求总是分配到同一台服务器。

      upstream php_servers {ip_hash;server 192.168.1.101;server 192.168.1.102;server 192.168.1.103;
      }
      

  4. 配置健康检查(可选)

    Nginx 还可以配置简单的健康检查,确保只向可用的服务器发送请求:

    upstream php_servers {server 192.168.1.101;server 192.168.1.102;server 192.168.1.103;# 健康检查配置check interval=5000 rise=2 fall=5 timeout=2000;
    }
    

    上述配置定义了一个健康检查,每隔 5000 毫秒进行一次检查,如果服务器连续 2 次健康检查通过,则将其标记为可用;如果连续 5 次检查失败,则将其标记为不可用。

  5. 重新加载 NGINX 配置

    保存配置文件后,重新加载 NGINX 使配置生效:

    sudo nginx -t
    sudo systemctl reload nginx
    

3. 测试负载均衡

配置完成后,访问你的域名 http://yourdomain.com,Nginx 会根据负载均衡策略将请求分发到后端的 PHP 服务器上。你可以通过不同的方式(如服务器日志、特定的响应内容等)来验证请求是否被均匀分配到各个服务器。


http://www.ppmy.cn/news/1521700.html

相关文章

Codeforces Round 969 (Div. 2 ABCDE题) 视频讲解

A. Dora’s Set Problem Statement Dora has a set s s s containing integers. In the beginning, she will put all integers in [ l , r ] [l, r] [l,r] into the set s s s. That is, an integer x x x is initially contained in the set if and only if l ≤ x ≤…

electron-vite打包出错

问题:1 electron-vite 安装, 打包下载资源失败,设置国内镜像 由于electron默认打包会从github上下载相关二进制包,众所周知,国内GitHub访问是相当慢的,所以经常会出现下载失败导致打包不成功,…

生信圆桌x生信宝库:生物信息学资源与工具的终极指南

介绍 生物信息学作为现代生物科学的重要分支,涉及到大量的数据处理、分析和存储工作。随着领域的不断发展,各类生物信息学资源与工具也如雨后春笋般涌现。这些资源涵盖了从基因组数据、蛋白质结构到代谢路径的方方面面,极大地丰富了科研人员的…

ElementUI 动态表格高度,使页面一屏显示

一、效果 二、代码 <script> export default {data () {return {maxHeight: 500}},methods: {handlePageReSize () {let card document.querySelector(.el-card);this.maxHeight card.clientHeight - 108;}},mounted () {let _this this;window.onresize () > {re…

pytorch view 函数介绍

view 是 PyTorch 中用于改变张量形状(tensor shape)的函数。与其他形状转换操作不同的是,view 并不改变张量的数据,而是返回一个新的张量,该张量与原始数据共享内存。 1. 基本用法 view 的作用是将一个张量重新排列成新的形状。它的基本语法是: tensor.view(shape)sha…

ES之三:springboot集成ES

一.选择版本很重要&#xff0c;不然会找不到好多方法 明明有Timeout方法&#xff0c;不报红&#xff0c;运行时&#xff0c;报错&#xff0c;找不到该类 ClassNotFoundException 为了避免使用的Elasticsearch版本和SpringBoot采用的版本不一致导致的问题&#xff0c;尽量使用…

高级算法设计与分析 学习笔记3 哈希表

首先我们要讨论一个把n个数据放到列表S里面的问题&#xff1a; 但很显然&#xff0c;这些数据的范围有多大这个T就得有多大&#xff0c;而实际上要放的数字可能就几个&#xff08;比如就放一个1和一个10000000&#xff0c;那我还是要准备一个巨大的T&#xff09;&#xff0c;不…

华为达芬奇人像引擎2.0,人像体验有哪些升级

对于年轻人而言&#xff0c;拍照已成为生活中不可或缺的一部分&#xff0c;不仅是为了记录世界、更重要的是成为生活的主角&#xff0c;大胆表达自己。然而很多喜欢使用手机记录生活的人&#xff0c;既希望能够实现媲美单反的影像实力&#xff0c;同时还想呈现出真实、更具自然…

利用机器人自动回复软件,显著提升客户体验

随着科技的飞速发展及互联网普及&#xff0c;机器人自动回复软件成为了现代企业的重要工具。无论是在客户服务领域&#xff0c;还是在营销、销售等方面&#xff0c;自动回复机器人都表现出了强大的功能和显著的效果。究竟什么是机器人自动回复技术?它是如何运行的?本文将为您…

懒加载<图片懒加载>

1、懒加载的概念 懒加载也叫做延迟加载、按需加载。指的是在长网页中延迟加载图片数据&#xff0c;是一种较好的网页性能优化的方式。 在比较长的网页或应用中&#xff0c;如果图片很多&#xff0c;所有的图片都被加载出来&#xff0c;而用户只能看到可视窗口的那一部分图片数…

基于Spring的Uniapp自动更新实现方法

Uniapp自动更新 本文介绍了基于rouyi-uniapp的更新包版本自动推送更新。结合minio和网址下载地址两种方式&#xff0c;计算版本号大小后&#xff0c;可选是否强制更新。 一、表结构和后端版本号检测设计 1、版本更新控制表结构 主要字段和设计思路&#xff1a; fileUrl&…

使用matplotlab绘制多条形图

##黑马程序学习 这种多个条形图放在一起的图形该怎么画呢&#xff1f; 请看以下代码 #横着的条形图 from matplotlib import pyplot as plt import matplotlib#设置显示中文 和 负号 matplotlib.rcParams[font.sans-serif][SimHei] matplotlib.rcParams[axes.unicode_minus]F…

学会这2招,让你轻松提取长视频中的文案!

在当今数字化时代&#xff0c;短视频已成为备受欢迎的内容形式&#xff0c;众多品牌和营销人员借助短视频推广宣传产品。 短视频文案作为短视频内容的关键部分&#xff0c;能够在极短时间内向受众传达品牌信息和产品特点。 不过&#xff0c;短视频文案的提取和创作确实极具挑…

CleanMyMac X2024破解版mac电脑清理工具

今天&#xff0c;我要跟大家分享一个让我彻底告别电脑卡顿的秘密武器——CleanMyMac X。这不仅仅是一款普通的清理工具&#xff0c;它是你电脑的私人健身教练&#xff0c;让电脑焕发青春活力&#xff01; CleanMyMac直装官方版下载地址&#xff1a; http://wm.makeding.com/i…

Xinstall助力App全渠道统计,参数传递下载提升用户体验!

在移动互联网时代&#xff0c;App已成为我们日常生活中不可或缺的一部分。然而&#xff0c;对于App开发者来说&#xff0c;如何有效地推广和运营自己的应用&#xff0c;却是一个不小的挑战。尤其是在面对众多渠道、复杂的数据统计和用户需求多样化的情况下&#xff0c;如何精准…

活动系统开发之采用设计模式与非设计模式的区别-需求整理

用户需求(活动系统)&#xff1a; 1、活动类型&#xff1a;答题、图片展示、签到、抽奖、组团等活动 2、活动介绍&#xff1a; a、答题活动&#xff1a; 第一种是签到后&#xff0c;随机抽取10道题&#xff0c;答对8到就可以抽奖&#xff1b; 第二种是随机抽取一道题&#xff0…

RSS/RFS/RPS

概念 在多核CPU中&#xff0c;有几种方式对网卡接收到到的数据进行分流以提升网络接收处理性能&#xff1a; RSS&#xff08;接收端缩放&#xff0c;Receive Side Scaling&#xff09;是一种网络适配器技术&#xff0c;用于将网络流量分配到多个CPU核上&#xff0c;从而提高并…

Linux操作系统:yum安装报错问题

目录 采用yum命令安装软件或库&#xff0c;报错的解决办法&#xff01; 第1步&#xff1a;检查yum组件 第2步&#xff1a;检查网络 第3步&#xff1a;检查网络防火墙 第4步&#xff1a;将yum源换成国内镜像源 采用yum命令安装软件或库&#xff0c;报错的解决办法&#xff…

macos 使用port查询并安装python2, python3多版本, 设置默认python版本方法

不管是新版macos还是旧版本的macos都可以使用macport这个包管理工具简单方便的在mac上面安装并存多个版本的python, 还可以利用port select --set python python3 来设置默认的python版本等. port search查询可用python安装包 命令 port search --name --line --regex ^pytho…

队列-数据结构

一、队列 FIFO 特点&#xff1a;先进先出&#xff0c;后进后出 允许从一段插入数据&#xff0c;另一端删除数据的线性存储结构 队尾&#xff1a;插入数据 入队 队头&#xff1a;删除数据 出队 管道实质上也是一个队列。 用途&#xff1a;缓存数据&#xff08;主要是避免两…