Nginx透過域名代理tcp埠

reggie發表於2021-07-12

碰到一種場景,使用nginx進行反向代理tcp埠,網上大部門的設定都是一個埠代理一個埠,沒有一個埠透過域名代理後端多個埠的情況。

修改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中引數變成域名。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
微信公眾號:碼咚沒 ( ID: codingdongmei )

相關文章