NGINX七层负载平衡设置方案

[复制链接]
发表于 2026-2-10 17:04:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、预备



  • 预备5台CentOS7服务器,IP所在如下:

    • HAproxy 192.168.152.71
    • web1 192.168.152.72
    • web2 192.168.152.73
    • php1 192.168.152.74
    • php2 192.168.152.75

二、设置NGINX服务器

1. 下载NGINX

  1. yum install -y nginx
复制代码
2. 编写设置文件

  1. vim /etc/nginx/nginx.conf
复制代码
编写内容如下:


  • 在 http 块中
    1. # 定义处理 .html 文件的上游服务器
    2. upstream htmlservers {
    3.     # 权重 1 (可选,默认 1),失败 2 次后标记为不可用(可选,默认 1),故障检测时间为 10 秒(可选,默认 10 秒)
    4.     server 192.168.152.72:80 weight=1 max_fails=2 fail_timeout=2;
    5.     # 权重 2 (可选,默认 1),失败 2 次后标记为不可用(可选,默认 1),故障检测时间为 10 秒(可选,默认 10 秒)
    6.     server 192.168.152.73:80 weight=2 max_fails=2 fail_timeout=2;
    7. }
    8. # 定义处理 .php 文件的上游服务器组
    9. upstream phpservers {
    10.     # 权重 1 (可选,默认 1),失败 2 次后标记为不可用(可选,默认 1),故障检测时间为 10 秒(可选,默认 10 秒)
    11.     server 192.168.152.74:80 weight=1 max_fails=2 fail_timeout=2;
    12.     # 权重 2 (可选,默认 1),失败 2 次后标记为不可用(可选,默认 1),故障检测时间为 10 秒(可选,默认 10 秒)
    13.     server 192.168.152.75:80 weight=2 max_fails=2 fail_timeout=2;
    14. }
    复制代码
  • 在server块中
    1. # 匹配所有请求,默认请求,没有定义的请求全部走这个服务器
    2. location / {
    3.         proxy_pass http://htmlservers;
    4. }
    5. # 对所有以 .html 结尾的请求进行处理
    6. location ~* \.html$ {
    7.     # 将请求转发到 htmlservers 服务器组
    8.     proxy_pass http://htmlservers;
    9. }
    10.    
    11. # 对所有以 .php 结尾的请求进行处理
    12. location ~* \.php$ {
    13.     # 将请求转发到 phpservers 服务器组
    14.     proxy_pass http://phpservers;
    15. }
    复制代码
  • 关于权重 weight

    • 权重类似时采取 轮询算法:哀求会按次序依次分配到服务器组中的每台服务器。
    • 权重差别时采取 加权轮询算法:根据各个服务器的权重值来分配哀求。权重越高的服务器会处置处罚更多的哀求。

3. 启动NGINX服务

  1. systemctl start nginx && systemctl enable nginx
复制代码
三、设置后端服务

①设置web服务器

测试用简朴设置,web1 和 web2 都要设置

  • 安装http服务
    1. yum install -y httpd
    复制代码
  • 编写主页
    web1:
    1. echo web1 > /var/www/html/index.html
    复制代码
    web2:
    1. echo web2 > /var/www/html/index.html
    复制代码
  • 启动http服务
    1. systemctl start httpd && systemctl enable httpd
    复制代码
②设置php服务器

测试用简朴设置,php1 和 php2 都要设置

  • 安装 php 和 http 服务
    1. yum install -y httpd
    2. php
    复制代码
  • 编写主页
    php1:
    1. echo php1 > /var/www/html/index.php
    复制代码
    php2:
    1. echo php2 > /var/www/html/index.php
    复制代码
  • 启动服务
    1. systemctl start httpd && systemctl enable httpd
    复制代码
四、测试



  • 可以在欣赏器分别输入:

    • http://192.168.152.71
    • http://192.168.152.71/index.html
    • http://192.168.152.71/index.php

多次革新,查察效果,前两个的效果为 web1,web2;末了一个效果为 php1,php2。
如果设置没有题目,但多次革新无果,大概是欣赏器缓存,可以用下令 elinks
下载 yum insdall -y elinks
  1. elinks --dump http://192.168.152.71
  2. elinks --dump http://192.168.152.71/index.html
  3. elinks --dump http://192.168.152.71/index.php
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表