如何使用nginx充当mysql的负载均衡器

 更新时间:2019年06月26日 11:02:29   作者:吾名锋仔  
这篇文章主要介绍了使用nginx充当mysql的负载均衡器过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

说明:nginx版本要求是1.9以上 ,编译nginx的时候需要加上 --with-stream

如:

./configure --prefix=/Data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-stream

注意

1.因为mysql默认使用了3306端口所以配置nginx tcp反向代理mysql的时候注意端口不要与mysql监听的端口一样比如我使用的是3307

2.确保能root用户能远程连接mysql

如数据库mysql 表user

nginx.conf

此段代码追加在nginx.conf文件末尾,注意不能加在http{}内

stream{
include /Data/apps/nginx/conf/stream/*.conf;
}

stream/db.conf

server {
listen 3307; #注意端口不能跟mysql监听的一样
proxy_pass db;
}
upstream db {
server 127.0.0.1:3306;
server 192.168.233.1:3306;
}

重启nginx, 查看nginx是否监听了3307端口

然后php代码是这样子

#其实就是new mysqli的时候只需改端口号与nginx反向代理设置的端口号一样就可以了
$mysqli = new mysqli('127.0.0.1','root','root','test',3307);

完整的php代码

<?php
class MysqlClass
{
private static $obj = NULL; //mysqlclass对象
public $host;
public $database;
public $user;
public $pwd;
public $port;
public $mysqli = NULL;
//禁止对象被克隆
private function __clone(){}
//禁止外部实例化
private function __construct($host="127.0.0.1",$database="test",$user="root",$pwd="root",$port="3307")
{
$this->host = $host;
$this->database = $database;
$this->user = $user;
$this->pwd = $pwd;
$this->port = $port;
$this->mysqli = $this->db_connect();
}
//获取mysqli连接
private function db_connect()
{
$mysqli = new mysqli($this->host,$this->user,$this->pwd,$this->database,$this->port);
if($mysqli->connect_errno)
{
printf("Connect failed: %s\n", $mysqli->connect_errno);
exit();
}
$mysqli->query("set names utf8 ");
return $mysqli;
}
//获取db实例
public static function get_db()
{
if(self::$obj === NULL)
{
self::$obj = new self();
}
return self::$obj;
}
public function db_query($sql)
{
$result = $this->mysqli->query($sql);
$arr = [];
while ($row = $result->fetch_assoc()) {
$arr[] = $row;
}
$result->close();
$this->mysqli->close();
return $arr;
}
public function db_insert()
{
}
public function db_update()
{
}
public function __destruct() {
$this->mysqli->close();
}
}
$db = MysqlClass::get_db();
$r = $db->db_query("show tables");
var_dump($r);

结果

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

相关文章

  • Nginx配置后请求报404的几种问题解决方法

    Nginx配置后请求报404的几种问题解决方法

    本文主要介绍了Nginx配置后请求报404的两种常见问题及其解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • nginx负载均衡下的webshell上传的实现

    nginx负载均衡下的webshell上传的实现

    本文主要介绍了nginx负载均衡下的webshell上传的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx url自动加斜杠及301重定向的问题

    nginx url自动加斜杠及301重定向的问题

    这篇文章主要介绍了nginx url自动加斜杠及301重定向的问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • nginx的keepalive相关参数使用源码解读

    nginx的keepalive相关参数使用源码解读

    这篇文章主要为大家介绍了nginx的keepalive相关参数使用源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解Nginx http资源请求限制(三种方法)

    详解Nginx http资源请求限制(三种方法)

    这篇文章主要介绍了Nginx http资源请求限制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Nginx中if语句的判断条件与多条件判断详解

    Nginx中if语句的判断条件与多条件判断详解

    这篇文章主要介绍了关于Nginx中if语句的判断条件与多条件判断的相关资料,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Nginx配置的rewrite编写时last与break的区别分析

    Nginx配置的rewrite编写时last与break的区别分析

    这篇文章主要介绍了Nginx配置的rewrite编写时last与break的区别分析,简单来说使用last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问,需要的朋友可以参考下
    2016-01-01
  • 使用Docker实现Nginx反向代理

    使用Docker实现Nginx反向代理

    本文主要介绍了使用Docker实现Nginx反向代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Nginx的流式响应配置实现小结

    Nginx的流式响应配置实现小结

    nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,本文主要介绍了Nginx的流式响应配置实现小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • Nginx正向反向代理区别及原理解析

    Nginx正向反向代理区别及原理解析

    这篇文章主要介绍了Nginx正向反向代理区别及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论