IIS и apache на одной машине и одном порту

Захотелось странного. По работе нужен IIS, для прочего apache. Можно было поставить apache на другой не 80 порт, но …, не хочу всегда писать порт. С налета — не получилось.  Пришлось порыться. Потому что нюансы есть.

Исходные данные:

Windows XP service pack 2, IIS 5.0, apache из XAMPP

 

network configuration -> TC/ICP configuration: добавляем второй IP (Например у нас был: 192.168.0.1, добавим еще один — 192.168.0.2)

Модифируем %windir%\system32\drivers\etc\hosts

127.0.0.1   localhost
192.168.0.1 iis
192.168.0.2 apache

IIS Management console -> default website -> Properties выбираем 192.168.0.1

Apache httpd.conf прописываем:

Listen 192.168.0.2:80
ServerName 192.168.0.2

Вуаля! Не тут-то было. IIS по умолчанию прослушивает на 80 и 443 порту все ip-адреса (apache правда на 443 точно также садится :) ). Посмотреть можно запустив:

netstat -ano


TCP    0.0.0.0:443     0.0.0.0:0     LISTENING       3450
TCP    0.0.0.0:443     0.0.0.0:0     LISTENING       3450

Две волшебные команды отучат IIS делать это:

443 порт для IIS поменяем на 4443

cscript adsutil.vbs set w3svc/<ID>/securebindings «:4443:»

ID можно узнать на IIS Management console -> Default website properties -> Web Site -> Properties. Цифра после W3scv (там где logname) и есть Ваш <ID>.

image

 

что бы IIS слушал только 80 порт на 192.168.0.1:

cscript adsutil.vbs set w3svc/DisableSocketPooling TRUE

Все. Теперь набирая http://iis или http://apache будете попадать на соответствующий  сервер.

Tags: , ,