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; } }