Nginx MySQL TCP 代理

 7个月前     3  

文章目录

Nginx MySQL TCP 代理设置,实现读写分离,均衡负载。

nginx 从 1.9.0 开始支持 tcp 代理,但是 ubuntu 软件源里自带的 nginx 没有编译 stream 模块,因此需要使用 Nginx 官方维护的软件源安装 Nginx 。

在 nginx.conf 中加入:

stream {
    include /etc/nginx/stream-enable/*.conf;
}

新建两个文件夹: stream-avaliable 和 stream-enable ,模仿 sites-avaliable

在 stream-avaliable 新建文件如 mysql.conf :

server {
    listen 3308;
    proxy_pass mysql_read;
}

upstream mysql_read {
    server 10.184.21.121:3306;
    server 10.184.21.122:3306;
}

启用:

sudo ln -s /etc/nginx/stream-avaliable/mysql.conf /etc/nginx/stream-enable

重启 nginx 。

测试

<?php

$mysqli = new mysqli("127.0.0.1", "root", "password", "db", "3308");

if (mysqli_connect_errno()) {
    printf("Connect error: %s\n", mysqli_connect_error());
    exit();
}

if ($result = $mysqli->query("SELECT * FROM `user` ORDER BY `uid` DESC LIMIT 1")) {
    $row = $result->fetch_row();
    echo json_encode($row);
    $result->close();
}

$mysqli->close();

暂无评论

暂无评论...