NAT 后面有多个物理服务器,使用一个 IP

NAT 后面有多个物理服务器,使用一个 IP

在具有一个外部 IP 的 NAT 后面托管多个物理服务器的首选解决方案是什么?我知道 Apache 可以反向代理 HTTP,但如果我想对 FTP 执行相同操作呢?Squid 似乎被多次提及,但我有点困惑它是否适用于我的设置:几个运行 Ubuntu 和 Virtualmin 的物理盒,它们都在 NAT 后面。每个物理盒都运行通常的 LAMP 堆栈并托管几个具有 FQDN 的虚拟服务器。我需要能够通过此解决方案访问 HTTP,但至少也要访问 FTP 和可能的 SSH。

答案1

对于 Web 服务器,我建议使用 Varnish 作为前端节点,它是 Apache 的反向代理。然后,您可以在 FQDN 上进行区分(并使用缓存加速您的 Web 服务器)

至于 FTP,那是另一回事,你只能使用不同的端口。此外,你必须确保 NAT 后面的服务器也使用 PASV 的转发端口。

Frontend <-> NAT <-> FTP1 (port 21, + PASV: 20000-21000)
Frontend <-> NAT <-> FTP2 (port 10021, + PASV: 21000-22000)

为 ftp 提供单个 ip/端口接口的唯一选择是将其托管在前端节点上(使用外部 ip),并挂载(nfs/samba)您需要在 ftp 上可用的其他文件夹。

答案2

对于 SSH,我只会让一个 SSH 服务器对外界开放。您连接到该服务器,现在您已处于 NAT 网络中,因此您可以从那里通过本地 IP 或名称访问其他服务器以进行管理。

不过,我无法帮助您处理网站。我知道如何在 IIS 中执行此操作,但我不太擅长使用 Apache。您可能能够在其中一台机器上的 Apache conf 文件中设置 VirtualHost 条目,指定它们监听的域名,并转发到适当的内部服务器,但同样,我对 Apache 不太了解。

相关内容