怎么使用nginx充当mysql的负载均衡器

发布时间 - 2023-05-18 00:00:00    点击率:

说明: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代码

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);

结果


# mysql  # nginx  # 的是  # 端口号  # 只需  # 这样子  # 重启  # 加在  # 就可以  # 使用了  # db  # server 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  教你用AI将一段旋律扩展成一首完整的曲子  移动端脚本框架Hammer.js  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  详解Android中Activity的四大启动模式实验简述  西安专业网站制作公司有哪些,陕西省建行官方网站?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何快速搭建二级域名独立网站?  如何正确选择百度移动适配建站域名?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在橙子建站中快速调整背景颜色?  如何在云服务器上快速搭建个人网站?  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何使用Blade组件和插槽?(Component代码示例)  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何在阿里云完成域名注册与建站?  Python数据仓库与ETL构建实战_Airflow调度流程详解  如何用西部建站助手快速创建专业网站?  如何安全更换建站之星模板并保留数据?  Laravel如何实现事件和监听器?(Event & Listener实战)  如何在建站之星网店版论坛获取技术支持?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何快速建站并高效导出源代码?  如何快速搭建FTP站点实现文件共享?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何在Windows 2008云服务器安全搭建网站?  javascript中的try catch异常捕获机制用法分析  太平洋网站制作公司,网络用语太平洋是什么意思?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何快速重置建站主机并恢复默认配置?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何快速生成专业多端适配建站电话?  如何在万网利用已有域名快速建站?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何快速搭建高效香港服务器网站?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel怎么上传文件_Laravel图片上传及存储配置