如何使用nginx充當(dāng)mysql的負(fù)載均衡器
說(shuō)明:nginx版本要求是1.9以上 ,編譯nginx的時(shí)候需要加上 --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.因?yàn)閙ysql默認(rèn)使用了3306端口所以配置nginx tcp反向代理mysql的時(shí)候注意端口不要與mysql監(jiān)聽(tīng)的端口一樣比如我使用的是3307
2.確保能root用戶能遠(yuǎn)程連接mysql
如數(shù)據(jù)庫(kù)mysql 表user

nginx.conf
此段代碼追加在nginx.conf文件末尾,注意不能加在http{}內(nèi)
stream{
include /Data/apps/nginx/conf/stream/*.conf;
}
stream/db.conf
server {
listen 3307; #注意端口不能跟mysql監(jiān)聽(tīng)的一樣
proxy_pass db;
}
upstream db {
server 127.0.0.1:3306;
server 192.168.233.1:3306;
}
重啟nginx, 查看nginx是否監(jiān)聽(tīng)了3307端口

然后php代碼是這樣子
#其實(shí)就是new mysqli的時(shí)候只需改端口號(hào)與nginx反向代理設(shè)置的端口號(hào)一樣就可以了
$mysqli = new mysqli('127.0.0.1','root','root','test',3307);
完整的php代碼
<?php
class MysqlClass
{
private static $obj = NULL; //mysqlclass對(duì)象
public $host;
public $database;
public $user;
public $pwd;
public $port;
public $mysqli = NULL;
//禁止對(duì)象被克隆
private function __clone(){}
//禁止外部實(shí)例化
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實(shí)例
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);
結(jié)果


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx配置后請(qǐng)求報(bào)404的幾種問(wèn)題解決方法
本文主要介紹了Nginx配置后請(qǐng)求報(bào)404的兩種常見(jiàn)問(wèn)題及其解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
nginx負(fù)載均衡下的webshell上傳的實(shí)現(xiàn)
本文主要介紹了nginx負(fù)載均衡下的webshell上傳的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
nginx url自動(dòng)加斜杠及301重定向的問(wèn)題
這篇文章主要介紹了nginx url自動(dòng)加斜杠及301重定向的問(wèn)題的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
nginx的keepalive相關(guān)參數(shù)使用源碼解讀
這篇文章主要為大家介紹了nginx的keepalive相關(guān)參數(shù)使用源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
詳解Nginx http資源請(qǐng)求限制(三種方法)
這篇文章主要介紹了Nginx http資源請(qǐng)求限制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Nginx配置的rewrite編寫時(shí)last與break的區(qū)別分析
這篇文章主要介紹了Nginx配置的rewrite編寫時(shí)last與break的區(qū)別分析,簡(jiǎn)單來(lái)說(shuō)使用last會(huì)對(duì)server標(biāo)簽重新發(fā)起請(qǐng)求,而break就直接使用當(dāng)前的location中的數(shù)據(jù)源來(lái)訪問(wèn),需要的朋友可以參考下2016-01-01
使用Docker實(shí)現(xiàn)Nginx反向代理
本文主要介紹了使用Docker實(shí)現(xiàn)Nginx反向代理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié)
nginx是一款自由的、開(kāi)源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器,本文主要介紹了Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04

