我已经使用 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 没有规定虚拟主机,这意味着服务器无法看到您想要通信的主机名。
以下是两种相对容易实施的潜在替代解决方案,每种方案都有各自的优点和局限性
- 在不同的端口上为两个后端服务器提供服务(例如ftp://abc.domain1.com/和 ftp://def.domain2.com:8021/. 设置起来非常简单,不需要反向代理,只需要转发一些额外的端口。缺点:其中一个域必须使用包含端口号的 URL,这对您来说可能是也可能不是问题。
- CrushFTP是一款商业但价格合理的 ftp、sftp 等服务器,可以通过多种方式轻松设置为多个后端:
- 作为目录,这将导致类似以下设置ftp://abc.domain1.com/abc和ftp://abc.domain1.com/def。
- 根据用户个人资料显示特定的后端,因此ftp://abc.domain1.com/根据登录者的不同,界面看起来会完全不同。
我们选择了选项 2,因为在日常运营中,它被证明是最灵活和最可靠的。作为额外的好处,它允许您使用除 ftp 之外的其他协议来传输到后端的流量,例如 sftp。
他们有一个功能齐全的演示版本,您可以下载并测试(如果我没记错的话,它限制为 5 个并发连接)。
唯一的潜在缺点:它是一个 Java 程序,因此它的占用空间(磁盘和内存)比常规 ftp 服务器要大一些。
答案3
就像 fvu 所说的那样,您不能使用 http 代理来路由 ftp。
最简单的方法是使用 sftp。但您可以使用 MobaXterm 来实现,这是一款一体化远程连接软件,它免费提供许多功能,而且价格合理。
最后的方法:创建 1folder/server 并设置 rsync 仅使用前端作为 ftp。