Примерно чуть больше полугода назад пришлось мне на один сервер установить веб сервер Apache и IIS6. По началу, сказал рас плюнуть :), разведём веб сервера по разным IP адресам и дело в шляпе. Но не-тут то было...
Основная цель в том, что бы оба веб сервера сидели на 80 порту. Так как на днях мне пришлось выполнить этот трюк ещё раз, то решил описать его на сайте. Начну с самого начала. Имеется сервер Windows 2003. В серваке установлено 2 сетевые карточки. На каждую карточку прописан свой IP адрес. Задача простая.
1. IIS сервер должен сидеть на одном IP и слушать по 80 порту. 2. Apache сервер должен сидеть на другом IP и тоже слушать по 80 порту.
Вот тут-то и начинаются грабли. Дело в том, что IIS сервер, по умолчанию, делает binding (привязку) ко всем IP адресам которые видны в системе. Даже если пройтись по всем установкам IIS и везде принудительно прописать один IP адрес, этого будет не достаточно.
Решить эту проблему поможет нам Httpcfg.exe. этот файл можно найти в Support.cab. В свою очередь файл Support.cab находится на оригинальном диске Windows Server 2003 в директории Support\Tools.
Теперь пару слов о том, как работать с Httpcfg.exe. Есть одна маленькая особенность. Если у вас на сервере есть больше двух IP адресов и вы хотите, что бы ваш IIS слушал сразу по нескольким адресам, то надо будет прописать каждый адрес.
Для определения на каком IP будет работать IIS, выходим в командную строку (cmd.exe) и запускаем:
httpcfg set iplisten -i xxx.xxx.x.x
Где xxx.xxx.x.x IP адрес на котором будет работать IIS-6 сервер. Если всё прошло нормально, то система выдаст следующий результат:
HttpSetServiceConfiguration completed with 0
Что-бы проверить результат запускаем:
httpcfg query iplisten
После выполнения данной процедуры, выполняем следующую команду:
net stop http /y
и
net start w3svc
Все, теперь наш IIS работает только на том IP адресе, который мы ему выделили. В свою очередь, в конфигурационном файле Apache (httpd.conf) настраиваем, что бы он работал по другому ИП. настройка должна выглядеть примерно так: