При установке веб-сервера 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:\inetpub\TestSite), В разделе 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.
Настройки привязок сайтов хранятся в конфигурационном файле IIS (
C:\Windows\System32\inetsrv\config\applicationHost.config
) в секции
<sites>
.
Можно настроить привязку сайта IIS из командной строки.
C:\Windows\System32\inetsrv\appcmd.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.
C:\Windows\system32\drivers\etc\hosts
).Настройка нескольких сайтов в 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 порту.
Добрый день
нужна помощь в настройке
внутри домена на IIS 8 (winServer 2012r2) установлена LMS moodle. вторым сайтом, hostname sdo.spo-ket.ru
по обращению из локальной сети ни по имени сайта, ни по ip адресу веб-сервера moodle не открывается.
локально на сервере:
localhost — веб страница не найдена.
sdo.spo-ket.ru — открывается (в hosts настройки внесены)
из сети:
при обращении по ip-адресу веб-сервера открывается default сайта
на сервер dns в домене создана зона с именем сайта на вебсервере. сайт учебного заведения _www.spo-ket.ru. при указании адреса в браузере sdo.spo-ket.ru выдается страница с хостера.
Задачи:
1. настроить dns и вебсервер так, чтобы из сети по указанию sdo.spo-ket.ru (или хотя бы ip адреса) открывался внутренний веб-сайт.
2. чтобы извне можно было зайти на внутренний сайт moodle техникума.
Я бы повесил сайт sdo.spo-ket.ru на отдельный ip адрес. Это упростит настройку.
Для интранет — нужно добавить в DNS запись для sdo.spo-ket.ru указывающую на new_ip_adress
Снаружи — сделать проброс трафика (80/443) на новый ip
Добрый день! Спасибо за статью. Подскажите, на работе есть домен windows company.ru и внешний веб-сайт company.ru (хостится в облаках). Требуется создать внутренний сайт на ИИС с именем ABC (доступен должен быть только внутри локальной сети компании). Как внутри ИИС-а назвать сайт: ABC.company.ru или просто ABC? Как на нашем ДНС-сервере сайт прописать: А-запись ABC с айпишником (тогда в ДНС будет две А записи: ИИС-сервера и сайта) или СНЭЙМ?
Заранее благодарен!
Можно использовать для сайта запись ABC.company.ru. Главное создать CNAME ABC.company.ru для вашего IIS сервера (должен ссылаться на внутренний IP, типа 192..168.x.x). Если ваши внутренние компьютеры настроены на ваши собственные DNS они должны использовать именно эту запись при разрешении имен.
Здравствуйте, помогите пожалуйста, по Вашим инструкциям сделал домен для сайта, его видно с того же компьютера(локально) — можно ли(поподробнее, я малоопытен в этом) сделать его видимым с интернета для любого пользователя
Забыл сразу сказать, этто виртуальная машина aws под windows server 2019, до «игры» с dns сайт был доступен по интернету по публичному ip. после — 404 (навепрное заглушка сервера, потому как при запросе по домену отвечает cтандартное «Не удается получить доступ к сайту»)
Приветствую. Поднят IIS и 2 виртуалки с веб-сервером.
Внутри сети по доменному имени все открывается (пока сконфигурировал только 1 сайт), а извне ни в какую не получается.
В сервер напрямую заходит интернет
Тут может быть много варианто: проверить доступность сайта по IP, настроены ли правила форвардинга с внешнего адреса на втутрении, правильно ли настроен внешний DNS, как настроен фаейрвол.
Ну это уже было.
Начиная с Windows Server 2003
Но спасибо
мне кажется проще использовать Nginx ?