У меня есть IIS с двумя сайтами + виртуальные папки IIS (w3root) на сервере win 2k3. Я задавался вопросом, есть ли способ также использовать FTP-трафик на этом канале, используя порт 80 на ftp-сервере.
Как мне это сделать, чтобы все веб-ресурсы работали без перебоев?
Нет, нельзя запускать HTTP и FTP на одном TCP-порту с одним и тем же IP-адресом. Если вы ищете способ загрузки файлов через порт 80 на веб-сервер, WebDAV может быть вариант.
Вас может заинтересовать руководство по использованию WebDAV с IIS на сервере 2003.
Не забывайте о безопасности! FTP - устаревший и небезопасный протокол, который никогда не должен использоваться в общедоступном Интернете, за исключением анонимных загрузок. FTP отправляет как ваше имя пользователя / пароль, так и ваши данные в виде открытого текста. SFTP и FTPS - разумные альтернативы.
Если вы не можете использовать SSL постоянно, включите Дайджест-аутентификация предотвратит отправку ваших паролей для входа в WebDAV в виде открытого текста.
Вы можете просто обслуживать каталоги с помощью HTTP-сервера.
Кроме того, вы можете использовать прокси-сервер squid для отправки некоторых запросов на ваш http-сервер и других (http) запросов, о которых он может запрашивать ftp-сервер.
Но нет, две программы на один порт в принципе нельзя поставить.
Вы также можете добавить Привязка FTP на сайт. Он не будет работать на порту 80, но позволит использовать FTP для тех же папок с содержимым.
Вы можете использовать объединение портов для привязки двух протоколов к одному порту. Вам, вероятно, придется написать собственное приложение, которое будет прослушивать этот порт, аналогично тому, как sslh делает.
По сути, это приложение будет прослушивать порт 80 и отправлять запрос в зависимости от того, что оно получает. Поскольку HTTP - это протокол, в котором сначала разговаривают клиенты, а FTP - это протокол, в котором первым разговаривает сервер, вам придется подождать x миллисекунд, чтобы узнать, отправил ли клиент HTTP-запрос. Если это так, отправьте его на свой фактический HTTP-сервер (вероятно, эффективно работающий на другом порту), в противном случае отправьте соединение на свой FTP-сервер.
В принципе, у вас может быть несколько протоколов, по которым клиент сначала разговаривает, и пытается определить, какой протокол используется, просматривая запрос. У вас не может быть более одного протокола, по которому сервер разговаривает первым.
Это явно не «чистый» способ решения этой проблемы, в основном это обходной путь, который может быть полезен в средах, где вы не контролируете сеть и кто-то наложил ограничения (возможно, произвольно) на порты, которые вы можете использовать. В противном случае лучше использовать официальный порт для каждого протокола. WebDAV может быть разумной альтернативой FTP, если вы ограничены в использовании HTTP.