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.

Другие вопросы по тегам