У меня есть сценарий, надеюсь, что кто-нибудь мне поможет с этим
Таким образом, сценарий таков: у меня есть сервер, доступный в Интернете, и несколько серверов, подключенных к моей локальной сети (В частной сети ), поэтому я хочу, чтобы кто-то пытался подключиться к домен в моей сети, я хочу, чтобы он был перенаправлен на другой сервер в частной сети
Итак, что я хочу, это если в 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, так что есть идеи, как этого добиться
Можно использовать директиву 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
можно использовать разные внутренние серверы и порты.