Как запустить сервер VisualSVN на порту 443, на котором работает IIS на том же сервере?
Server 2008 R2 SP1
VisualSVN Server 2.1.6
Сервер IIS имеет около 10 сайтов. Один из них использует https через порт 443 со следующими привязками:
http x.x.x.39:80 site.com
http x.x.x.39:80 www.site.com
https x.x.x.39:443
VisualSVN Server Properties
server name: svn.SomeSite.com
server port: 443
Server Binding: x.x.x.40
Ни один сайт на IIS не слушает ххх40.
При запуске сервера VisualSVN выдается следующее сообщение об ошибке:
- make_sock: не удалось выполнить привязку к адресу xxx40:443 (OS 10013) Была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа.
- нет доступных гнезд для прослушивания, отключение
Когда я останавливаю Site.com в IIS, сервер VisualSVN запускается без проблем. Когда я связываю сервер VisualSVN с портом 8443 и запускаю Site.com, тогда сервер VisualSVN запускается без проблем.
Моя цель - получить доступ к серверу VisualSvn с обычным URL-адресом, то есть с тем, который не использует номер порта в адресе:
https://svn.site.com vs https://svn.site.com:8443
Что необходимо настроить, чтобы позволить серверу VisualSVN работать на порту 443 с IIS, работающим на том же сервере?
Редактировать / Ответить
Ответ, предоставленный Иваном, направил меня в правильном направлении. Для всех, кто сталкивается с этим, вот немного больше информации.
Даже несмотря на то, что в моем IIS не было привязок к IP-адресу, который я использую для VisualSvn, IIS все равно будет брать IP-адрес в заложники, если IIS явно не скажет, какие IP-адреса слушать.
В Win Server 2k8 отсутствует графический интерфейс для настройки IP-адресов для прослушивания IIS; по умолчанию IIS прослушивает все IP-адреса, назначенные серверу.
Следующее поможет настроить IIS для прослушивания только тех IP-адресов, которые вы хотите:
- откройте командную строку
- войти:
netsh
- войти:
http
- войти:
show iplisten
-> это покажет таблицу IP-адресов, которые IIS слушает. По умолчанию таблица будет пустой (я думаю, это означает, что IIS прослушивает все IP) - Для каждого IP-адреса, который должен прослушать IIS, введите:
add iplisten ipaddress=x.x.x.x
- войти:
show iplisten
-> Теперь вы должны увидеть все IP-адреса, добавленные в таблицу прослушивания. - Выйдите и перезагрузите IIS.
Каждая из этих команд также может быть запущена напрямую, т.е. netsh http show iplisten
Если вам нужно удалить IP-адрес из таблицы прослушивания:
- откройте командную строку
- войти:
netsh
- войти:
http
- войти:
delete iplisten ipaddress=x.x.x.x
- Выйдите и перезагрузите IIS.
2 ответа
Уже ответил там. Используйте следующую команду:
netsh http add iplisten ipaddress=x.x.x.39
Два отдельных процесса не могут связываться с одним и тем же портом по одному адресу.
Парой вариантов может быть добавление второго IP-адреса на сервер или использование обратного прокси-сервера, который может обслуживать оба сайта на 443 через один и тот же процесс.