nginx 通过域名代理tcp端口

本文介绍如何使用Nginx的stream模块实现TCP端口的反向代理,通过一个端口代理后端多个不同端口的服务,如MySQL和Redis,基于域名进行区分,提供了一种高效灵活的网络服务代理方案。

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

只需要修改nginx.conf,添加如下配置即可,

stream {
    map $ssl_preread_server_name $name {
        mysql.test.com mysql;
        redis.test.com redis;
        default https_default_backend;
    }
    upstream mysql{
        server 10.0.0.3:3306;
    }
    upstream redis{
        server 10.0.0.4:6379;
    }
    upstream https_default_backend {
        server 127.0.0.1:443;
    }
    server {
        listen 10.0.0.1:443;
        proxy_pass $name;
        ssl_preread on;
    }
}

stream 模块可能会没有。百度下nginx 添加stream 模块即可

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

或者

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

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

参考:

https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/40135151#40135151

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值