我有一个场景希望有人能帮助我
因此,场景是,我有一个可以访问互联网的服务器和一些连接到我的局域网(在专用网络中)的服务器,所以我想要的是,当有人尝试连接到我的网络中的域时,我希望它被重定向到专用网络中的另一台服务器
所以我想要的是,如果在 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
可以使用不同的后端服务器和端口。