2016-10-12 2 views
0

У нас есть 2 веб-сервера в Azure, которые сбалансированы по нагрузке. Мы просто установили SSL на наших этих лазурных веб-сайтах, чтобы преобразовать его в HTTPS.Переадресация HTTP на HTTPS в Azure (с балансировкой нагрузки)

Теперь мы хотим, чтобы любой запрос, поступающий как HTTP, должен быть изменен/перенаправлен на соединение HTTPS.

Итак, для тестирования я создал опубликованный веб-сайт на своей локальной машине, а затем добавил самоподписанный сертификат SSL для получения безопасного сайта. Затем я использовал URL rewrite, чтобы направить HTTP-сайт на HTTPS. Я использовал это в Web.config.

Это прекрасно работает на моем локальном опубликованном сайте.

Но это не работает на сервере Azure и дает мне внутреннюю ошибку сервера.

Любые идеи?

Я использовал следующие в Web.config для URL переписать

<rewrite> 
    <rules>  
     <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
      <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTPS}" pattern="Off" /> 
        <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
       </conditions> 
       <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="SeeOther" /> 
     </rule>   
    </rules> 
</rewrite> 

ответ

1

Попробуйте это, взятое из How to force HTTPS using a web.config file

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="Redirect to https" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
        </conditions> 
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

В качестве альтернативы, если ваше приложение является MVC один вы можете достичь это с использованием фильтра - ниже будет поиск настроек в настройках вашего приложения (или web.config) и убедитесь, что RequireHttps включен, если он установлен в true - вы можете сделать то же самое, аннотируя ваши контроллеры с помощью [Requir eHttps].

string requireHttps = ConfigurationManager.AppSettings["RequireHttps"]; 
    if (string.IsNullOrEmpty(requireHttps) || string.Compare(requireHttps, "false", true)!=0) 
    filters.Add(new RequireHttpsAttribute()); 
+0

Это не сработало. Мой сайт не MVC. Это традиционный веб-сайт C# .NET на IIS. И у меня есть 2 загруженных сбалансированных виртуальных машины на Azure, где размещен веб-сайт. – ShanChat972

+0

Ваше решение не работает. Но я понял это. [b] Мне не хватало модуль перезаписи URL-адресов в IIS на сервере [/ b]. Установка, что сделал трюк https://www.iis.net/downloads/microsoft/url-rewrite Теперь сервер IIS может перенаправить запросы на URL-адрес с HTTP на HTTPS :-) – ShanChat972

+0

Чтобы помочь другим - был решение выше неправильно, или оно не работает, потому что у вас не установлен модуль для IIS? –