案例:一個朋友要用Nginx代理MySQL(MySQL局域網),不用***,不用NAT映射等,好吧,做個筆記。
Nginx版本:1.9.x(持tcp的負載均衡,nginx_tcp_proxy_module(姚偉斌阿里團隊也可以實現))
Nginx官方模塊: ngx_stream_core_module --with-stream_ssl_module(ssl協議支持,比如MySQL ssl)
官網:http://nginx.org/en/docs/stream/ngx_stream_core_module.html
1、查看現有編譯
--user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module
2、重新編譯:
--user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-stream --with-stream_ssl_module
注意:--with-stream --with-stream_ssl_module
3、配置、檢測、重啓nginx:
配置:
stream { upstream mysql { zone myapp1 64k; server localhost:3306 weight=1 max_fails=3 fail_timeout=30s; #server 192.168.1.221:3306 weight=1 max_fails=2 fail_timeout=30s; } server { listen 2188; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass mysql; } }
檢測:
[root@autoCentos67X64 conf]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@autoCentos67X64 conf]#
啓動:
[root@autoCentos67X64 conf]# netstat -atupn|grep nginx tcp 0 0 0.0.0.0:2188 0.0.0.0:* LISTEN 2359/nginx [root@autoCentos67X64 conf]#
4、驗證:(轉載請保留:renzhiyuan.blog.51cto.com)
[root@log~]# mysql -uroot -prenzhiyuan -h 192.168.1.11 -P2188 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.21-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
注意:2188可是Nginx的端口,代理(負載)後端的MySQL。其它玩法大家可自己研究。