IIS: запуск нескольких веб-сайтов на одном порту и IP адресе

При установке веб-сервера IIS (Internet Information Services) в Windows, создается пустой веб-сайт “ Default Web Site ”, который слушает на стандартном веб порту TCP 80. В этой статье мы разберёмся, как на одном веб-сервере IIS запустить несколько сайтов с разными именами и привязать их к одному HTTP/HTTPS порту и одному или разным IP адресам.

Как запустить несколько сайтов на одном порту сервера IIS?

Допустим, у вас в IIS уже создан один HTTPS сайт на 443 порту ( установка SSL сертификата в IIS ). Мы добавим еще один HTTPS веб-сайт, который будет также слушать на порту TCP 443.

Создайте второй сайт в консоли управления IIS ( inetmgr ). Нажмите Site -> Add website. Укажите имя сайта TestSite , каталог с файлами сайта ( c:inetpubTestSite ), В разделе Bindings укажите тип HTTPS, порт 443, выберите SSL сертификат. Имя хоста пока не указывайте.

Если попробовать запустить новый сайт, появится ошибка, что один порт (443) назначен для нескольких сайтов. Одновременно на этом порту может быть запущен только один сайт IIS.

This website cannot be started. Another website may be using the same port.

Чтобы веб сервер IIS мог распределять HTTP запросы между несколькими сайтами, у каждого из них должен быть уникальный идентификатор. В IIS он определяется тремя атрибутами:

  • номер TCP порта
  • IP адрес
  • имя узла (host header)

Значение этих атрибутов для каждого сайта хранится в атрибуте ServerBindings метабазы IIS в формате IP:Port:Hostname. Если значения всех трех атрибутов у двух сайтов совпадают, IIS не сможет запустить второй сайт. Чтобы запустить второй сайт на том же порту и IP адресе, вам нужно задать ему уникальное имя ( host header ) и создать в DNS запись, которая задаст соответствие между именем сайта и его IP.

Итак, чтобы запустить второй сайт, нужно выбрать Edit Bindings -> Edit и добавить в Host Header уникальное DNS имя для этого сайта. Например testsite.contoso.com .

Если на HTTPS сайтах используются разные SSL сертификаты, и они запущены на одном IP адресе, для таких сайтов нужно в разделе Binding включить опцию Require Server Name Indication (SNI). Если это не сделать, IIS не сможет определить какой сертификат использовать (т.к. HTTP заголовки еще не доступны во время SSL/TLS рукопожатия).

Настройки привязок сайтов хранятся в конфигурационном файле IIS ( C:WindowsSystem32inetsrvconfigapplicationHost.config ) в секции <sites> .

Можно настроить привязку сайта IIS из командной строки.

C:WindowsSystem32inetsrvappcmd.exe Appcmd.exe set site "testsite" /bindings:"https://testsite.contoso.com:443"

Теперь можно запустить второй веб сайт.

Добавьте запись в DNS для вашего нового имени сайта. Это может быть запись типа A или CNAME, указывающую на IP адрес веб-сервера или его имя.

Если вы разворачиваете веб сервер в зоне домена Active Directory, нужно создать DNS запись на контроллере домена. Вы можете создать CNAME запись с помощью консоли DNS ( dnsmgmt.msc ). В качестве FQDN target host указать FQDN имя вашего хоста с IIS.

Также можно создать DNS запись с помощью PowerShell :

Add-DnsServerResourceRecordCName -HostNameAlias msk-srv01.contoso.com -Name testsite -ZoneName contoso.com

Теперь вы можете в браузере открыть сайт https://testsite.contoso.com .

Вы можете настроить автоматический редирект в IIS с HTTP на HTTPS адрес сайта с помощью модуля URL Rewrite.

На отдельностоящем веб сервере IIS можно создать имени сайтов с IP адресом сервера через локальный файл hosts ( C:Windowssystem32driversetchosts ).

Настройка нескольких сайтов в IIS на разных IP адресах

Веб сервер IIS также позволяет запускать сайты на разных IP адресах. Сначала нужно добавить дополнительный IP адрес в Windows Server. Это можно реализовать с помощью отдельного VLAN интерфейса или через добавление на сетевой интерфейс дополнительного IP адреса (алиаса) .

В этом примере основной IP адрес сервера 192.168.13.100. Добавим на этот сетевой адаптер дополнительный IP адрес 192.168.13.101:

Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias 'Ethernet' –SkipAsSource $True

Теперь на DNS сервере создайте A запись для нового сайта (сразу создадим PTR запись в обратной зоне):

Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName contoso.com -TimeToLive 01:00:00 –CreatePtr

После этого в настройках Site Binding привяжите сайт к новому IP адресу.

Управление привязкой сайтов IIS с помощью PowerShell

Вы можете управлять привязкой (биндингом) сайтов на сервере IIS с помощью встроенного PowerShel модуля WebAdministration:

Import-Module WebAdministration

Вывести информацию о всех имеющихся сайтах и привязках:

Get-IISSite

Либо о конкретном сайте:

(Get-Website -Name testsite).bindings.Collection

Изменить порт веб-сайта с 443 на 81:

Set-WebBinding -Name testsite -BindingInformation "*:443:testsite.contoso.com" -PropertyName 'Port' -Value '81'

Изменить IP адрес сайта:

Set-WebBinding -Name testsite -BindingInformation "192.168.13.101:81:testsite.contoso.com" -PropertyName 'IPAddress' -Value '192.168.13.100'

Добавить новую привязки сайту:

New-IISSiteBinding -Name testsite -BindingInformation "*:8080:" -Protocol http

Удалить привязку:

Remove-IISSiteBinding -Name NewSite3 -BindingInformation "*:9090:"

Таким образом вы можете запустить на веб сервере IIS множество сайтов как на разных IP адресах, так и на одном и том же IP адресе и TCP порту.

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago