假设我有一个kevin.com域名,并且有多个服务器位于nginx后面。对于nginx来说,负载平衡http流量很容易,但是我能将在nginx服务器上的特定端口上接收到的流量分开并将该流量路由到后端的不同服务器吗?例如,如果我有a.kevin.com、b.kevin.com和c.kevin.com,它们都解析为一个公共ip地址,并且都在端口2022上侦听,并且我希望能够连接到后端3台不同服务器上运行的ssh实例,这能用nginx完成吗?我能否将ssh转到a.kevin.com:2022,并将其转发给端口22、b.kevin.com:2022 -> 10.0.0.2:22和c.kevin.com:2022 -> 10.0.0.3:22的10.0.0.1机器?我假设nginx必须能够以某种方式解析外部连接的主机名。谢谢。
发布于 2020-07-21 20:29:43
服务器无法知道您想要的主机名;这不是ssh协议的一部分。
最好的解决方案是使用IPv6连接到每个服务器。在这种情况下,您根本不需要做任何愚蠢的端口转发或任何其他类型的解决办法。你只需直接连接(当然是防火墙),你就会有一个快乐的一天。
在遗留的IPv4世界中,解决这个问题的通常方法是一个堡垒主机,一个服务器,它在您的网络上有一个全局IPv4地址和一个私有IPv4地址。首先向那个主机发送ssh,然后再向您真正想达到的主机发送ssh。OpenSSH ssh命令甚至有一个命令行选项-J,它简化了这个进程。
为了在IPv4端口转发中做到这一点,您需要为每个不同的服务器转发一个单独的端口。
https://serverfault.com/questions/1026183
复制相似问题