反向代理多个内部 FTP 服务器

反向代理多个内部 FTP 服务器

我已经使用 Apache mod_proxy 设置了 http 的反向代理,如下所示:

  • 客户>http:/abc.domain1.com>反向代理服务器>192.168.50.1(内部服务器)

  • 客户>http://def.domain2.com/>反向代理服务器>192.168.50.2(另一个内部服务器)

现在我想对 FTP 实现同样的效果:

  • 客户>ftp:/abc.domain1.com/>反向代理服务器>ftp:/192.168.50.1(内部 FTP 服务器)

  • 客户>ftp:/def.domain2.com/>反向代理服务器>ftp:/192.168.50.2(另一个内部 FTP 服务器)

两个内部 FTP 服务器都运行 vsftpd。请告诉我 Redhat/Centos 的设置。

原因:我只有一个可用的公网IP。

答案1

您可以使用委托作为反向 FTP 代理:

http://www.delegate.org/delegate/Manual.htm?serv_FTP

用户名如user@server,分解为用户和服务器,用于匹配不同的服务器。

答案2

设置您要寻找的内容有两个问题:

  • 与 http 不同,ftp 的反向代理非常罕见,而现有的代理(如旧的 Suse proxysuite)——说得客气点——设置和使用起来并不是很愉快。
  • 与 http 1.1 不同,ftp 没有规定虚拟主机,这意味着服务器无法看到您想要通信的主机名。

以下是两种相对容易实施的潜在替代解决方案,每种方案都有各自的优点和局限性

  1. 在不同的端口上为两个后端服务器提供服务(例如ftp://abc.domain1.com/ftp://def.domain2.com:8021/. 设置起来非常简单,不需要反向代理,只需要转发一些额外的端口。缺点:其中一个域必须使用包含端口号的 URL,这对您来说可能是也可能不是问题。
  2. CrushFTP是一款商业但价格合理的 ftp、sftp 等服务器,可以通过多种方式轻松设置为多个后端:
    1. 作为目录,这将导致类似以下设置ftp://abc.domain1.com/abcftp://abc.domain1.com/def
    2. 根据用户个人资料显示特定的后端,因此ftp://abc.domain1.com/根据登录者的不同,界面看起来会完全不同。

我们选择了选项 2,因为在日常运营中,它被证明是最灵活和最可靠的。作为额外的好处,它允许您使用除 ftp 之外的其他协议来传输到后端的流量,例如 sftp。

他们有一个功能齐全的演示版本,您可以下载并测试(如果我没记错的话,它限制为 5 个并发连接)。

唯一的潜在缺点:它是一个 Java 程序,因此它的占用空间(磁盘和内存)比常规 ftp 服务器要大一些。

答案3

就像 fvu 所说的那样,您不能使用 http 代理来路由 ftp。

最简单的方法是使用 sftp。但您可以使用 MobaXterm 来实现,这是一款一体化远程连接软件,它免费提供许多功能,而且价格合理。

最后的方法:创建 1folder/server 并设置 rsync 仅使用前端作为 ftp。

相关内容