我想设置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.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
要好得多。