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