我有一个 Web 服务器,我们授予顾问 FTP 访问权限。对于托管在该服务器上的一个域,他需要访问“dev”目录,而对于托管在该服务器上的另一个域,他需要访问另一个目录。我尝试使用 VirtualHosts 进行设置,但遇到了问题。这是我的 proftpd.conf 文件中的 VirtualHost 位:
<VirtualHost www.example2.com>
ServerName "Example 2"
DefaultRoot /var/www/example2/dev
</VirtualHost>
<VirtualHost www.example1.com>
ServerName "Example 1"
DefaultServer on
DefaultRoot /var/www/example1
</VirtualHost>
当我通过 FTP 连接到任一域时,我总是获得第一个 VirtualHost,即使我通过 FTP 连接到第二个域。
答案1
FTP 不像 HTTP 那样工作。没有基于名称的虚拟主机。只有基于 IP 的虚拟主机。如果您需要相同的用户名但不同的目录,您可以为它们使用单独的 TCP 端口或多个 IP。
答案2
请注意,随着RFC 7151,FTP 现在有一个HOST
支持基于真实名称的虚拟主机的命令,就像Host
标头对 HTTP 1.1 所做的那样。
ProFTPDHOST
从 1.3.6rc1 版本开始实现此命令。要使用它,您可以简单地在您的<VirtualHost>
部分中使用 DNS 名称,如下所示:
<VirtualHost mysite.example.com>
或者你可以明确地别名根据需要虚拟服务器:
<VirtualHost 1.2.3.4>
ServerAlias mysite1.example.com
ServerAlias ftp.example.com
...
</VirtualHost>
希望这可以帮助!
全面披露:我是 ProFTPD 的作者。