说明:nginx版本要求是1.9以上 ,编译nginx的时候需要加上 --with-stream
如:
1
|
. /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{}内
1
2
3
|
stream{
include /Data/apps/nginx/conf/stream/ *.conf;
}
|
stream/db.conf
1
2
3
4
5
6
7
8
|
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代码是这样子
1
2
|
#其实就是 new mysqli的时候只需改端口号与nginx反向代理设置的端口号一样就可以了
$mysqli = new mysqli( '127.0.0.1' , 'root' , 'root' , 'test' ,3307);
|
完整的php代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<?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 );
|
结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.jianshu.com/p/81344f4da2bc