ProFTPd: несколько доменных виртуальных хостов на одном IP-адресе
У меня есть веб-сервер, к которому мы предоставляем консультанту доступ по FTP. Для одного домена, размещенного на этом сервере, ему нужен доступ к каталогу "dev", а для другого домена, размещенного на этом сервере, ему нужен доступ к другому каталогу. Я пытаюсь настроить это с VirtualHosts, но у меня есть проблемы. Вот бит VirtualHost моего файла proftpd.conf:
<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 по второму домену.
2 ответа
FTP не работает как HTTP. Виртуальных хостов на основе имени не существует. Только на основе IP. Если вам нужно одно и то же имя пользователя, но разные каталоги, вы можете использовать для них отдельные TCP-порты или несколько IP-адресов.
Обратите внимание, что с появлением RFC 7151 FTP теперь имеет HOST
команда для поддержки виртуальных хостов на основе настоящих имен, так же как Host
заголовок делает для HTTP 1.1.
И ProFTPD реализует это HOST
команда с версии 1.3.6rc1. Чтобы использовать его, вы можете просто использовать DNS-имена в вашем <VirtualHost>
раздел, вот так:
<VirtualHost mysite.example.com>
Или вы можете явно указать псевдоним виртуальных серверов:
<VirtualHost 1.2.3.4>
ServerAlias mysite1.example.com
ServerAlias ftp.example.com
...
</VirtualHost>
Надеюсь это поможет!
Полное раскрытие: я автор ProFTPD.