根据域请求对 RDP 进行反向代理

根据域请求对 RDP 进行反向代理

我有一个场景希望有人能帮助我

因此,场景是,我有一个可以访问互联网的服务器和一些连接到我的局域网(在专用网络中)的服务器,所以我想要的是,当有人尝试连接到我的网络中的域时,我希望它被重定向到专用网络中的另一台服务器

所以我想要的是,如果在 rdp whn.domain.com 中声明,那么这应该是首先暴露在互联网上的服务器

比私有 IP ---> 192.168.71.1

相似地,

whm.domain.com ---> 192.168.71.2
whh.domain.com ----> 192.168.71.3

目前在我的 nginx.conf 中我有

stream {
    # ...
    server {
        listen     3389;
        proxy_pass 192.168.72.13:3389;
    }
}

所以现在它所做的就是将对我的服务器端口 3389 的任何请求重定向到一个单独的 ip

现在我想检查它指向的域名,然后将其转移到该 IP

我想要类似的东西

stream {
    # ...
    server {
        listen     3389;
        server_name whm.domain.com
        proxy_pass 192.168.71.1:3389;
    }
    server {
        listen     3389;
        server_name whn.domain.com
        proxy_pass 192.168.71.1:3389;
    }
}

但是流上下文不支持 server_name 指令,所以知道如何才能实现这一点

答案1

可以使用该map指令和ngx_stream_ssl_preread_module

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

    access_log  "/var/log/$ssl_preread_server_name-access.log" basic;
    error_log   "/var/log/$ssl_preread_server_name-error.log"  info;

    map $ssl_preread_server_name $name {
        hostnames;
        # map ssl_preread_server_name to name
        whm.domain.com  192.168.71.1:3389;
        whn.domain.com  192.168.71.1:3389;
    }

    server {
        listen 3389;
        ssl_preread on;
        proxy_pass $name:$server_port;
        proxy_buffer_size 64k;
        proxy_connect_timeout 60s;
    }
}

map可以使用不同的后端服务器和端口。

相关内容