Когда вы устанавливаете веб-сервер IIS (Internet Information Services) под Windows, в окне «Порт и IP-адрес» появляется пустая строка «Веб-сайт по умолчанию» создается, прослушивая стандартный HTTP порт 80. В этой статье мы узнаем, как разместить несколько веб-сайтов на веб-сервере IIS и привязать их к одному и тому же порту HTTP или HTTPS и одному или нескольким IP-адресам.

Запуск https-сайта на IIS в Windows

Запуск нескольких веб-сайтов на сервере IIS с помощью заголовков хоста

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

Создайте второй сайт в консоли управления IIS (inetmgr). Нажмите кнопку Сайт -> Добавить сайт. Укажите название сайта (TestSite) и путь к каталогу файлов сайта (c:\inetpub\TestSite). Укажите HTTPS тип, порт 443, выберите SSL-сертификат в разделе «Привязка». Имя хоста пока не указывайте.

Добавление второго веб-сайта на веб-сервер IIS

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

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

Этот веб-сайт не может быть запущен. Другой веб-сайт может использовать тот же порт.

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

  • номер TCP-порта
  • IP-адрес
  • Имя хоста (заголовок хоста)

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

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

изменение имени хоста сайта iis (привязка)

Если HTTPS-сайты используют разные SSL-сертификаты и работают на одном IP-адресе, необходимо включить параметр Указание имени сервера (SNI) в разделе «Связывание» для таких сайтов. Если этого не сделать, IIS не сможет определить, какой сертификат использовать (потому что заголовки сайта HTTP еще не доступны во время рукопожатия SSL/TLS).Включение опции указания имени сервера (SNI) в IIS

Настройки привязки веб-сайтов IIS хранятся в файле конфигурации IIS (C:\Windows\System32\inetsrv\config\applicationHost.config) в файле конфигурации IIS <sites> разделе.

Вы также можете настроить привязку сайта IIS из командной строки:

C:\Windows\System32\inetsrv\appcmd.exe Appcmd.exe set site "testsite" /bindings:"https://testsite.contoso.com:443"

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

Запуск нескольких веб-сайтов на IIS

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

Если вы устанавливаете веб-сервер в доменной зоне Active Directory, создайте запись DNS на контроллере домена. Для этого можно использовать консоль DNS (dnsmgmt.msc) для создания записи CNAME. В качестве целевого FQDN укажите имя узла, на котором запущен IIS.

Создание DNS-записи для веб-сайта IIS

Также можно использовать PowerShell для создания DNS-записи:

Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.contoso.com -Name testsite -ZoneName contoso.com

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

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

Вы можете использовать модуль URL Rewrite, чтобы включить перенаправление веб-адреса IIS с HTTP на HTTPS.

Если вы используете отдельный сервер IIS, вы можете сопоставить имена веб-сайтов с IP-адресом сервера с помощью модуля hosts файл (C:\Windows\system32\drivers\etc\hosts).

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

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

В этом примере IP-адрес узла Windows Server имеет вид 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

добавить дополнительный ip (псевдоним) на windows

Теперь вам нужно создать запись A для нового сайта на DNS-сервере. Мы также создадим запись PTR в зоне обратного поиска, добавив параметр –CreatePtr опцию):

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

Затем привяжите сайт к новому IP-адресу в конфигурации Site Binding.

Изменение IP-адреса в привязке веб-сервера IIS

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

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

Import-Module WebAdministration

Просмотр информации обо всех доступных сайтах IIS и их привязках:

Get-IISSite

powershell: list iis website bindings

Или о конкретном сайте:

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

Измените TCP-порт веб-сайта с 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'

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

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

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

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

Это позволяет запускать на веб-сервере IIS несколько сайтов как на разных IP-адресах, так и на одном IP-адресе и/или TCP-порте.