nginx を mysql のロードバランサとして使用する方法

WBOY
リリース: 2023-05-18 22:37:10
転載
1321 人が閲覧しました

注: 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
ログイン後にコピー

Note

1. mysql はデフォルトでポート 3306 を使用するため、nginx tcp リバース プロキシ mysql を設定するときは、そのポートが mysql がリッスンするポートと同じでないことに注意してください。たとえば、3307

2 を使用します。root ユーザーが mysql

たとえばデータベース mysql テーブル user

# にリモートで接続できることを確認してください。 nginx を mysql のロードバランサとして使用する方法

#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 コードは次のようになりますnginx を mysql のロードバランサとして使用する方法##

#其实就是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 を mysql のロードバランサとして使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート