Nginx配置Tcp负载均衡的方法

 更新时间:2022年07月26日 16:46:25   作者:高二的笔记  
这篇文章主要为大家详细介绍了Nginx配置Tcp负载均衡的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文使用Nginx作为代理服务器,用来做负载均衡。只是一个简单的应用示例,并不涉及原理。

(这里主机有限,42.192.22.128主机8000端口用来做代理服务器监听端口,8181是服务监听端口)
客户端访问代理服务器,由代理服务器分发请求给相应的服务端。
修改Nginx的配置文件来配置Tcp负载均衡(Nginx安装后配置文件在/usr/local/nginx/conf/nginx.config中,Nginx可执行程序在/usr/local/nginx/sbin目录下)
nginx.conf配置文件中添加如下字段:

stream {
    upstream Server {
        server 42.192.22.128:8181 weight=1 max_fails=3 fail_timeout=30s;
        server 1.13.180.100:8181 weight=1 max_fails=3 fail_timeout=30s;
    }
    server {
        listen 8000;
        proxy_pass Server;
    }
}

这里主要涉及两个配置块upstreamserver
upstream中定义了两台主机,weight表示权重,两台主机都为1,说明代理服务器会平分客户端请求给上游服务器,max_failsfail_timeout配合使用,指在fail_timeout时间段内,如果向当前的上游服务器转发失败次数超过3次,则认为在当前的fail_timeout时间段内这台上游服务器不可用。fail_timeout表示该时间段内转发失败多少次后就认为上游服务器暂时不可用。
server中指定了代理服务器监听的端口号8000proxy_pass指定upstream块中的名字Server
配置完成后,使用nginx -s reload使运行中的Nginx重读配置项并生效。
上游服务器使用“瑞士军刀”nc命令来模拟TCP服务端,监听在相应的端口:(这里的Ip地址是云主机的内网ip)

客户端用一个简单的Qt小程序模拟一下:

void Widget::on_btnConnection_clicked()
{
    m_pTcpSocket->connectToHost(ui->lineeditIp->text(), ui->lineeditPort->text().toUShort());
    qDebug() << m_pTcpSocket->state();
}

void Widget::on_btnSend_clicked()
{
    qDebug() << m_pTcpSocket->state();
    QByteArray byteArray;
    byteArray.append(ui->texteditMsg->toPlainText());
    const char *pChatMsg = byteArray.data();
    qDebug() << m_pTcpSocket->write(pChatMsg, byteArray.size());
}

先后启动两个客户端,通过TCP连接至42.192.22.128:8000,并发送消息,可以看到消息被分发到了两台主机上,说明客户端的请求确实被分发到了不同的服务端上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Nginx 配置 ModSecurity 网络应用防火墙实现

    Nginx 配置 ModSecurity 网络应用防火墙实现

    这篇文章主要介绍了Nginx 配置 ModSecurity 网络应用防火墙实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Nginx反斜杠自动解码问题解决方法

    Nginx反斜杠自动解码问题解决方法

    这篇文章主要介绍了Nginx反斜杠自动解码问题解决方法,有些时候是不需要解码的,可nginx缺会自动解码,本文讲解的就是如何解决这个问题,需要的朋友可以参考下
    2015-02-02
  • nginx服务器access日志中大量400 bad request错误的解决方法

    nginx服务器access日志中大量400 bad request错误的解决方法

    这篇文章主要介绍了nginx服务器access日志中大量400 bad request错误的解决方法,本文结论是空主机头导致的大量400错误日志,关闭默认主机的日志记录就可以解决问题,需要的朋友可以参考下
    2015-01-01
  • Nginx在Windows下的安装与使用过程详解

    Nginx在Windows下的安装与使用过程详解

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,这篇文章主要介绍了Nginx在Windows下的安装与使用,需要的朋友可以参考下
    2023-05-05
  • Nginx CertBot配置HTTPS泛域名证书Debian及常见问题

    Nginx CertBot配置HTTPS泛域名证书Debian及常见问题

    这篇文章主要介绍了Nginx CertBot配置HTTPS泛域名证书Debian及常见问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 解析Nginx中的日志模块及日志基本的初始化和过滤配置

    解析Nginx中的日志模块及日志基本的初始化和过滤配置

    ngx_errlog_module是Nginx中用来管理日志的模块,解析Nginx中的日志模块及日志基本的初始化和过滤配置,需要的朋友可以参考下
    2016-07-07
  • Nginx防止直接用IP访问Web服务器的设置方法

    Nginx防止直接用IP访问Web服务器的设置方法

    看了很多Nginx的配置,好像都忽略了ip直接访问Web的问题,这样理论上不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面
    2012-09-09
  • Nginx+cpolar实现内网穿透多个Windows Web站点端口的步骤详解

    Nginx+cpolar实现内网穿透多个Windows Web站点端口的步骤详解

    这篇文章主要给大家介绍了Nginx+cpolar实现内网穿透多个Windows Web站点端口的详细步骤,文章通过图文介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-10-10
  • Nginx的搭建与核心配置方法

    Nginx的搭建与核心配置方法

    Nginx是一个高性能的反向代理和 Web服务器软件,最初是由俄罗斯人 Igor Sysoev开发的,其源代码基于双条款BSD许可证发布,因其系统资源消耗低、运行稳定且具有高性能的并发处理能力等特性,这篇文章主要介绍了Nginx的搭建与核心配置,需要的朋友可以参考下
    2024-06-06
  • docker部署nginx并且挂载文件夹和文件操作

    docker部署nginx并且挂载文件夹和文件操作

    这篇文章主要介绍了docker部署nginx并且挂载文件夹和文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论