Обратный прокси для 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, так что есть идеи, как этого добиться

0
задан 26 April 2021 в 13:15
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можно использовать разные внутренние серверы и порты.

0
ответ дан 8 September 2021 в 07:51

Теги

Похожие вопросы