nginx 反向代理mysql及redis(TCP反向代理) 反向代理多个服务器

stream {        #定义stream;TCP模块是和HTTP一样的一个独立模块,所以不能设置在HTTP里面。
   upstream mysql-server {    #定义后端服务器
       server 192.168.38.37:3306 max_fails=3 fail_timeout=30s;     #定义具体server
   }

   upstream redis-server {
       server 192.168.38.47:6379 max_fails=3 fail_timeout=30s;
   }

   server {     #定义server
       listen 3306;                  #监听本机所有IP的3306端口
       proxy_connect_timeout 30s;    #连接超时时间
       proxy_timeout 30s;            #转发超时时间
       proxy_pass mysql-server;      #转发到具体服务器组
   }

   server {
       listen 192.168.38.27:6379;    #监听在本机的192.168.38.27的6379端口
       proxy_connect_timeout 30s;
       proxy_timeout 30s;
       proxy_pass redis-server;
   }
}
TCP反向代理是基于IP和端口号;这个设置不要设置在http模块中,tcp和http是两个独立的模块,不要设置在一起。

  

示例配置:

stream{
    #proxy 192.168.1.222
	upstream proxy222{
        server 192.168.1.222:502 weight=1 max_fails=2 fail_timeout=60s;
    }
	server{
			listen 512;
			proxy_connect_timeout 30s;
			proxy_timeout 30s;
			proxy_pass proxy222;
	}
	#proxy 192.168.1.224
    upstream proxy224{
        server 192.168.1.224:502 weight=1 max_fails=2 fail_timeout=60s;
    }
	server{
			listen 513;
			proxy_connect_timeout 30s;
			proxy_timeout 30s;
			proxy_pass proxy224;
	}
	#proxy 192.168.1.225
    upstream proxy225{
        server 192.168.1.225:502 weight=1 max_fails=2 fail_timeout=60s;
    }
	server{
			listen 514;
			proxy_connect_timeout 30s;
			proxy_timeout 30s;
			proxy_pass proxy225;
	}
}

  

有任何需要沟通交流的联系QQ群:276483863 加好友备注【博客园技术交流】
原文地址:https://www.cnblogs.com/JoePotter/p/15398298.html