您的位置 首页 nginx

Nginx通过域名代理tcp端口

Nginx通过域名代理tcp端口

Nginx通过域名代理tcp端口 | Laravel China 社区 (learnku.com)

碰到一种场景,使用 nginx 进行反向代理 tcp 端口,网上大部门的设置都是一个端口代理一个端口,没有一个端口通过域名代理后端多个端口的情况。

stream 是一个单独的模块,不需要放在 nginx-http 配置中,可以放在 nginx.conf 的最后。

只需要把 map 中参数变成域名。

我用的案例2: 域名直接解析到 服务器, 然后通过 域名:8192 就可以访问。

stream {
    upstream mysql{
        server 10.1.5.3:3306;
    }
    upstream redis{
        server 10.1.5.4:6379;
    }
    map $server_addr $bane {
        192.168.168.238 mysql;
        192.168.168.239 redis;
    }
    server {
        listen 80;
        proxy_pass $name;
    }
}

 

案例2:

直接把域名解析到宿主机,就可以使用域名+端口 来访问tcp 了。

 

stream {

    log_format basic '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';

    upstream tcp_proxy {
        hash $remote_addr consistent; #远程地址做个hash
        server 192.168.1.210:32035; #cloudservice8193 后期改成 socket 8193
    }
    server {
        listen 8193;

        proxy_connect_timeout 1s; #后端链接空闲超时断开
        proxy_timeout 10s; #后端连接超时时间
        proxy_pass tcp_proxy;


   access_log  /var/log/nginx/cloudservice.XXX.com.log basic;
   #error_log  /var/log/nginx/cloudservice.XXX.com.error.log;
 }

案例3:

1、 配置场景,在服务器(ip为192.168.2.3)上安装虚拟机centos(ip为192.168.146.200),现将mysql、redis安装到虚拟机上,现需要把mysql和redis代理出来

2、打开nginx.conf配置文件,根据具体的host和port进行配置

stream  {
  
   #代理mysql
	upstream  mysql {
	   server  192.168.146.200:3306; 
	}
    server {
        listen                13306;
        proxy_pass            mysql;	
		proxy_timeout         300s; 
		proxy_connect_timeout 10s;		
	}
 
    #代理redis
	upstream  redis {
	   server  192.168.146.200:6379; 
	}
    server {
        listen                16379;
        proxy_pass            redis ;	
		proxy_timeout         300s; 
		proxy_connect_timeout 10s;		
	}
 
 
}

3、访问mysql服务

在本机使用 192.168.2.3:13306即可

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章