如何设置nginx设置来分配请求指向不同的域不同的服务器?

我想设置nginx从请求指向不同的域分配不同的服务器。 nginx服务器环境如下。

CentOS Linux版本7.3.1611(Core)nginx 1.11.8 *configuration–with-stream参数。 从源代码构build和安装。

我的形象是。

server1.testdomain.com ssh request ->(global IP) *nginx server -> (local IP)192.168.1.101 server server2.testdomain.com ssh request ->(global IP) *nginx server -> (local IP)192.168.1.102 server 
  • nginx服务器是相同的全球本地IP和相同的服务器。

nginx.conf是…

 stream { error_log /usr/local/nginx/logs/stream.log info; upstream server1 { server 192.168.1.101:22; } upstream server2 { server 192.168.1.102:22; } server { listen 22 server1.testdomain.com; proxy_pass server1; } server { listen 22 server2.testdomain.com; proxy_pass server2; } } 

但是… nginx:[emerg]发生错误时出现无效的“server1.testdomain.com”参数。 这似乎是impossilbe执行,如听“22 server1.testdomain.com”。

而且,我试图在“server”中写入“server_name”。 nginx:[emerg]“server_name”指令在这里是不允许的···不允许在“server”中使用“server_name”。

如何编写configuration文件来为差异域请求分发差异服务器? 如果你有一个想法或信息,你可以教我吗?

它不可能与nginx,因为stream模块是L3平衡器。 SSH协议在L5 / 7工作。

它根本不可能,因为ssh协商不包括目标主机名。

你可以只使用两个不同的IP或使用两个不同的端口来做你想做的事情。 在这两种情况下,nginx都可以转发连接,但在这种情况下使用iptables要好得多。