2016-10-12 54 views
0

我們在Azure中有2個負載均衡的Web服務器。 我們剛剛在我們這些天青網站中安裝了SSL,將其轉換爲HTTPS。將HTTP重定向到Azure中的HTTPS(使用負載平衡器)

現在我們希望任何以HTTP形式進入的請求都應該更改/重定向到HTTPS連接。

因此,我爲了測試我在本地機器上創建了一個已發佈的網站,然後添加了自簽名的 SSL證書以獲得安全的網站。然後我使用URL重寫將我的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。它是IIS上的傳統C#.NET網站。我在Azure託管網站上有2個負載均衡的虛擬機。 – ShanChat972

+0

您的解決方案不起作用。 但我明白了。 [b]我錯過了服務器上IIS上的URL重寫模塊[/ b]。安裝該訣竅 https://www.iis.net/downloads/microsoft/url-rewrite 現在IIS服務器可以從HTTP的URL請求重定向到HTTPS :-) – ShanChat972

+0

幫助別人 - 是上面的錯誤解決方案,還是不工作,因爲你沒有爲IIS安裝模塊? –

相關問題