![在端口 80 上运行 FTP 服务器以及网络流量](https://linux22.com/image/579118/%E5%9C%A8%E7%AB%AF%E5%8F%A3%2080%20%E4%B8%8A%E8%BF%90%E8%A1%8C%20FTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%A5%E5%8F%8A%E7%BD%91%E7%BB%9C%E6%B5%81%E9%87%8F.png)
我在 win 2k3 服务器上运行了两个站点 + IIS 虚拟文件夹 (w3root) 的 IIS。我想知道是否有任何方法可以通过使用 ftp 服务器上的端口 80 在该管道上搭载 FTP 流量。
我该如何做到这一点并且仍然保持网络服务不间断地运行?
答案1
不可以,您不能在同一 IP 地址的同一 TCP 端口上运行 HTTP 和 FTP。如果您正在寻找通过端口 80 将文件上传到 Web 服务器的方法,WebDAV可能是一种选择。
您可能对以下方面感兴趣在 Server 2003 上使用 WebDAV 与 IIS 的教程。
别忘了安全!FTP 是一种过时且不安全的协议,除了匿名下载外,永远不应在公共互联网上使用。FTP 以纯文本形式发送您的用户名/密码和数据。SFTP 和 FTPS 是合理的替代方案。
如果您无法始终使用 SSL,请启用摘要式身份验证将阻止您的 WebDAV 登录密码以纯文本形式发送。
答案2
您可以只使用 HTTP 服务器来提供目录服务。
另外,您可以使用 squid 代理将一些请求放到您的 http 服务器上,并将其他 (http) 请求询问给 ftp 服务器。
但是不,原则上你不能在一个端口上放置两个程序。
答案3
您还可以添加FTP 绑定到站点。它不会在端口 80 上运行,但允许针对相同内容文件夹使用 FTP。
答案4
您可以使用端口统一将两种协议绑定到同一个端口上。不过,您可能必须编写自己的应用程序来监听该端口,方式类似于安全组做。
本质上,此应用程序将监听端口 80,并根据收到的内容分派请求。由于 HTTP 是客户端先对话的协议,而 FTP 是服务器先对话的协议,因此您必须等待 x 毫秒才能查看客户端是否已发送 HTTP 请求。如果是,则将其分派到您的实际 HTTP 服务器(可能实际上在另一个端口上运行),否则,将连接分派到您的 FTP 服务器。
原则上,您可以有多个客户端首先对话的协议,然后尝试通过查看请求来检测使用哪种协议。您不能有多个服务器首先对话的协议。
这显然不是解决这个问题的“干净”方法,它主要是一种变通方法,可能在您无法控制网络且有人对您可以使用的端口设置限制(可能是任意的)的环境中有用。否则,最好坚持使用每个协议的官方端口。如果您只能使用 HTTP,WebDAV 可以成为 FTP 的合理替代方案。