NGINX 中配置负载均衡器

embedded/2024/9/20 7:36:30/ 标签: 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/embedded/107324.html

相关文章

【Motion Forecasting】SIMPL:简单且高效的自动驾驶运动预测Baseline

SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 这项工作发布于2024年,前一段时间我已经对这篇文章的摘要和结论进行了学习和总结,这一部分详见https://blog.csdn.net/Coffeemaker88/article/details/1…

公寓项目(尚庭公寓笔记)

公寓项目 课程介绍项目概述移动端业务功能后台管理系统业务功能-公寓管理后台管理系统业务功能-租赁功能后台管理系统业务功能-系统管理&用户管理核心业务功能技术概述 项目开发流程项目原型数据库设计理论ER模型数据库设计流程 数据库设计实操概念模型逻辑模型公寓信息房间…

Windows中jupyter开启远程连接(局域网)

我是用实验室的电脑(做服务器,window)给我的电脑(做客户机,window)开远程连接,step1-4都是在服务器上操作,step5是在客户机上 step1:生成密钥 服务器cmd输入 jupyter n…

一种极简的余弦定理证明方法

余弦定理的证明方法有很多种,这里介绍一种极简的证明方法。该方法是本人在工作中推导公式,无意中发现的。证明非常简单,下面简单做下记录。   如上图为任意三角形ABC,以点C为原点,建立直角坐标系(x轴方向…

基于 TiDB 资源管控 + TiCDC 实现多业务融合容灾测试

导读 随着金融行业的不断发展,多个业务系统的整合成为了趋势,分布式数据库的应用也愈发广泛。为了应对多业务融合带来的复杂性,金融机构需要在保障各业务系统高效运行的同时,确保 IT 系统的高可用性和稳定性。本文将介绍 TiDB 如…

【区块链 + 房产建筑】区块链不动产登记系统 | FISCO BCOS应用案例

武汉链动时代科技有限公司基于 FISCO BCOS 搭建区块链不动产登记系统,利用区块链技术存储不动产数据,保障数据安全,并实时汇交。 系统对入链数据和交易情况进行实时监控,支持数据的共享查询。

SpringBoot2.7 + Nacos + GateWay

1. pom包&#xff0c;主要是记录版本 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:/…

Java SpringBoot构建传统文化网,三步实现信息展示,传承文化精髓

✍✍计算机毕业编程指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java…

ElasticSearch-ELK

Logstash Logstash 配置文件结构Logstash 导入数据到 ES同步数据库数据到 ES FileBeatELK&#xff08;采集 Tomcat 服务器日志&#xff09; 使用FileBeats将日志发送到LogstashLogstash输出数据到Elasticsearch&#xff08;logstash开头的索引&#xff09; 利用Logstash过滤器解…

Jsoncpp的安装与使用

目录 安装Jsoncpp Jsoncpp的使用 Value类 构造函数 检测保存的数据类型 提取数据 对json数组的操作 对Json对象的操作 FastWriter类 Reader类 JsonCpp 是一个C库&#xff0c;用于解析和生成JSON数据。它支持解析JSON文件或字符串到C对象&#xff0c;以及将C对象序列…

Java 面向对象编程基础详解(一)

目录 一、面向对象编程概述 &#xff08;一&#xff09;面向对象编程的特点 &#xff08;二&#xff09;Java 中的面向对象编程元素 二、类和对象 &#xff08;一&#xff09;类的设计 &#xff08;二&#xff09;类的实例化 &#xff08;三&#xff09;面向对象完成具体…

GAMES104:10+11游戏引擎中物理系统的基础理论算法和高级应用-学习笔记

文章目录 概览一&#xff0c;物理对象与形状1.1 对象 Actor1.2 对象形状Actor Shape 二&#xff0c;力与运动2.1 牛顿定律2.2 欧拉法2.2.1 显式欧拉法Explicit (Forward) Euler’s Method2.2.2 隐式欧拉法 Implicit (Backward) Euler’s Method2.2.3 半隐式欧拉法 Semi-implici…

台球助教系统小程序源码开发与技术解析

在当今的数字化时代&#xff0c;信息技术与体育运动的融合日益紧密。JAVA台球助教系统源码是一个专门为台球教学设计的多端应用系统&#xff0c;它不仅能够提供个性化的教学体验&#xff0c;还能实现多端数据同步和实时互动。本文将从技术角度出发&#xff0c;深入探讨该系统的…

Java并发编程实战 01 | 进程和线程

最早的计算机就像一个新手服务员&#xff0c;只有在接收到每一条指令时才会开始执行。当用户输入指令时&#xff0c;计算机会执行这条指令&#xff0c;然后等待下一条指令。如果用户在思考或者犹豫时&#xff0c;计算机就会乖乖地等待&#xff0c;虽然这很规范&#xff0c;但效…

深度解读并发安全集合的原理及源码

本节主要介绍J.U.C包中的几种并发安全集合&#xff1a;ConcurrentHashMap,ConcurrentLinkedQueue,和ConcurrentLinkedDeque。所谓并发安全集合&#xff0c;相对于普通集合来说&#xff0c;能够保证在多线程环境下向集合中添加数据时的线程安全性。主要讲ConcurrentHashMap在实现…

一个平台重要的规则改了!

大家好&#xff0c;我是凡人小哥。 是一个不黑、不吹、不跟风、有知识、有骨气的五好小号主。 现在是凌晨1点13分&#xff0c;就在昨天微信公众平台又又又调整了&#xff0c;可能朋友们还在想是不是又要严格了&#xff1f;这次恰恰相反&#xff0c;腾讯把注册微信公众号的门槛…

7、Django Admin删除默认应用程序

admin文件 from django.contrib.auth.models import User, Groupadmin.site.unregister(User) admin.site.unregister(Group) 显示效果&#xff1a; 前 后

数学基础 -- 线性代数之矩阵的秩

矩阵的秩&#xff1a;概念与应用 1. 概述 矩阵的秩&#xff08;Rank&#xff09;是线性代数中的一个基本概念&#xff0c;它衡量了矩阵中行或列向量的线性无关性。矩阵的秩在解线性方程组、矩阵分解、确定线性变换的维度等方面起着重要作用。 2. 矩阵的秩的定义 矩阵的秩可…

Android Camera系列(二):TextureView+Camera

两岸猿声啼不住&#xff0c;轻舟已过万重山—李白 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLS…

IP地址是怎么实现HTTPS访问的?

首先&#xff0c;需要明确的是&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是互联网上设备&#xff08;如服务器、路由器等&#xff09;的唯一标识符&#xff0c;它允许数据包在网络中正确地路由和传输。然而&#xff0c;IP地址本身并不直接支持HTTPS…