使用nginx代理mysql连接有个好处就是,如果做了容灾处理的话, 可以瞬间平滑切换到可用服务上。
1. vi /etc/nginx/nginx.conf ,在 http{} 结构体外(也就是文件末尾)添加如下配置:
stream {
upstream cloudsocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server192.168.182.155:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen3306;#数据库服务器监听端口
proxy_connect_timeout 10s;
proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_pass cloudsocket;
}
}
2. cat /etc/nginx/nginx.conf ,内容如下:
worker_processes 1;
events {
worker_connections1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location/{
root html;
index index.html index.htm;
}
error_page500 502 503 504 /50x.html;
location= /50x.html {
root html;
}
}
}
stream {
upstream cloudsocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server192.168.182.155:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen3306;#数据库服务器监听端口
proxy_connect_timeout 10s;
proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_pass cloudsocket;
}
}
3. systemctl restart nginx ,重启nginx。
4.验证
登录192.168.182.156服务器执行看是否有3306端口的监听
[root@localhost sbin]# netstat -nap|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 89870/nginx: master
用Navicat for MySQ工具测试是否能连接