У меня есть виртуальная машина в лазурном режиме, на которой запущены три автономных приложения (не размещенных в IIS) на трех разных портах.
Я могу получить к ним доступ по адресам ниже:
my-server.cloudapp.azure.com:8080
my-server.cloudapp.azure.com:8081
my-server.cloudapp.azure.com:8082
Я купил доменное имя (my-server.company.com
) и хотите создать три поддомена, указывающих на каждое соответствующее приложение.
application-1.my-server.company.com
application-2.my-server.company.com
application-3.my-server.company.com
Моя первая мысль - установить IIS на виртуальную машину и настроить обратный прокси-сервер с помощью URL Rewrite на веб-сайте по умолчанию, как указано в этой статье (http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis).
Поэтому в этом сценарии я бы установил записи CNAME для каждого из поддоменов, чтобы они указывали на my-server.cloudapp.azure.com:80
а затем настройте обратный прокси-сервер для пересылки на разные порты (8080
, 8081
, 8082
) на основе заголовка хоста.
Возможно ли это / лучший способ сделать это?
Второй вопрос: как только я получу это, как я могу добавить ssl?
Будет ли каждому поддомену нужен свой собственный сертификат ssl, и в этом случае, как это может работать с настройкой выше (нет веб-сайтов iis для привязки каждого сертификата). Или я могу просто использовать сертификат для my-server.company.com, а затем разгрузить его на обратном прокси-сервере?
Я создал DNS-записи CNAME следующим образом:
CNAME | application-1 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com
Потом на лазурном вм бегу Кэдди (веб-сервер HTTP / 2 с автоматическим HTTPS) со следующим Caddyfile:
application-1.my-server.company.com {
proxy / localhost:8080 {
proxy_header Host {host}
}
}
application-1.my-server.company.com {
proxy / localhost:8081 {
proxy_header Host {host}
}
}
application-1.my-server.company.com {
proxy / localhost:8082 {
proxy_header Host {host}
}
}
Красота этого заключается в том, что Caddy запускается впервые, он автоматически включает HTTPS для всех ваших сайтов (используя автоматически сгенерированные сертификаты от Let's Encrypt), а также перенаправляет все HTTP-запросы на их эквивалент HTTPS.
Эта установка также означала, что мне не нужно было устанавливать IIS на виртуальную машину.
ПРИМЕЧАНИЕ. Вам необходимо добавить правило брандмауэра для входящих подключений для портов 80 и 443, чтобы Caddy работал.
Если я правильно понял ваш вопрос, вы хотите сделать следующее:
application-1.my-server.company.com point to my-server.cloudapp.azure.com:8080
application-2.my-server.company.com point to my-server.cloudapp.azure.com:8081
application-3.my-server.company.com point to my-server.cloudapp.azure.com:8082
Одним из решений является использование обратного прокси. Подробнее см. В этом вопросе: Как перенаправить поддомены на другой порт того же сервера?. Вы можете использовать самоподписанный сертификат между обратным прокси-сервером и веб-серверами.
Вы также можете выгрузить сертификат SSL: https://kb.paessler.com/en/topic/44613-using-windows-iis-as-ssl-proxy-for-prtg. Но тогда вам нужно управлять несколькими сертификатами. Вы можете поставить обратный прокси nginx перед каждым приложением, чтобы добавить поддержку SSL.
В вашем DNS добавьте одну запись A для my-server.company.com. Лучше всего для поддоменов создавать записи CNAME, когда они находятся на одном сервере. Таким образом, вам нужно будет обновлять только запись A при изменении вашего IP. В противном случае создайте записи A для каждого поддомена.
Для сертификата SSL. У вас должен быть сертификат на каждом сервере. При использовании нескольких серверов трафик между обратным прокси-сервером и веб-службой должен быть безопасным. Это потому, что между вашими серверами может также быть человек в середине атаки.
Вы можете создать три виртуальных хоста и установить имена привязки для каждого приложения (DNS-запись типа A, я думаю, вы не можете использовать CNAME, потому что запись A такая же в размещенном приложении), вы можете видеть https://technet.microsoft.com/en-us/library/cc731692(v=ws.10).aspx
Наконец, для каждого виртуального хоста создайте правило перезаписи URL.