Когда вы устанавливаете веб-сервер IIS (Internet Information Services) под Windows, в окне «Порт и IP-адрес» появляется пустая строка «Веб-сайт по умолчанию» создается, прослушивая стандартный HTTP порт 80. В этой статье мы узнаем, как разместить несколько веб-сайтов на веб-сервере IIS и привязать их к одному и тому же порту HTTP или HTTPS и одному или нескольким IP-адресам.
Запуск нескольких веб-сайтов на сервере IIS с помощью заголовков хоста
Предположим, что вы уже создали HTTPS-сайт на IIS, работающий на порту TCP:443 (Как установить SSL-сертификат на IIS).
Создайте второй сайт в консоли управления IIS (inetmgr
). Нажмите кнопку Сайт -> Добавить сайт. Укажите название сайта (TestSite) и путь к каталогу файлов сайта (c:\inetpub\TestSite). Укажите HTTPS
тип, порт 443
, выберите SSL-сертификат в разделе «Привязка». Имя хоста пока не указывайте.
Когда вы пытаетесь запустить новый веб-сайт, вы получаете ошибку, говорящую о том, что один порт (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 хранятся в файле конфигурации 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"
Теперь можно запустить второй сайт.
Добавьте запись DNS для имени вашего нового веб-сайта. Это может быть запись A или CNAME, указывающая на IP-адрес или имя хоста веб-сервера IIS.
Если вы устанавливаете веб-сервер в доменной зоне Active Directory, создайте запись DNS на контроллере домена. Для этого можно использовать консоль DNS (dnsmgmt.msc
) для создания записи CNAME. В качестве целевого FQDN укажите имя узла, на котором запущен IIS.
Также можно использовать PowerShell для создания DNS-записи:
Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.contoso.com -Name testsite -ZoneName contoso.com
Теперь вы можете открыть свой второй веб-сайт https://testsite.contoso.com в браузере.
Вы можете использовать модуль URL Rewrite, чтобы включить перенаправление веб-адреса IIS с HTTP на HTTPS.
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
Теперь вам нужно создать запись A для нового сайта на DNS-сервере. Мы также создадим запись PTR в зоне обратного поиска, добавив параметр –CreatePtr
опцию):
Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName contoso.com -TimeToLive 01:00:00 –CreatePtr
Затем привяжите сайт к новому IP-адресу в конфигурации Site Binding.
Управление привязкой веб-узла IIS с помощью PowerShell
Вы можете управлять привязкой сайтов на сервере IIS с помощью встроенного модуля PowerShell WebAdministration:
Import-Module WebAdministration
Просмотр информации обо всех доступных сайтах IIS и их привязках:
Get-IISSite
Или о конкретном сайте:
(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-порте.