我正在嘗試將使用單個用戶帳戶的ASP.NET MVC Web應用程序部署到使用彈性負載平衡器(ELB)的AWS服務器。我已將該站點部署到AWS應用服務器上的IIS,將其連接到我的AWS SQL服務器,並且它在服務器上按預期工作(事實上,當我在Visual Studio中運行它或部署到內部服務器時)。ASP.NET MVC網站在AWS後面無法正常工作ELB
遠程訪問時出現問題,當然這是通過ELB進行的。
-
和
- 如果我試圖訪問https://www.example.com/這是行不通的 - 這將我重定向到http://www.example.com/Account/Login?ReturnUrl=%2F,其中掛起,然後我得到一個408錯誤。
- 如果我嘗試訪問,比如說,https://www.example.com/Dashboard/Index它不起作用 - 它會將我重定向到http://www.example.com/Account/Login?ReturnUrl=%2FDashboard%2FIndex,哪一手,然後我會得到一個408錯誤。
- 如果我嘗試直接訪問https://www.example.com/Account/Login,它工作正常。然後,我可以登錄,並且我網站中的所有頁面按預期工作。如果我退出,我會被重定向到http://www.example.com/Account/Login?ReturnUrl=%2F,哪一手,然後我會得到一個408錯誤。
所以基本上,如果我登錄了,沒關係。如果我沒有登錄,登錄頁面沒問題,但沒有別的。我的想法以及我們內部團隊的一位與AWS合作的同事(他不能幫助我順便說一句,我問過!)是,當我重定向到登錄頁面時,它是一個HTTP請求,而不是HTTPS ,這就是問題的原因,但不管我嘗試過什麼,我都無法使用HTTPS重定向。我已經試過:
- 添加規則在我的web.config文件拿起轉發的請求,並將其重定向到HTTPS - 這似乎並沒有取得任何顯着的區別
- 各種不同的屬性添加到任我的一個FilterConfig或登錄動作
- 使用URL在IIS中直接添加規則重寫
顯然,我的解決方法是讓每個人都去到登錄頁面,並從那裏開始,而不是僅僅根URL,但我真的很想像這樣排序,就好像重定向沒有在這裏工作,我可以看到它不在其他地方工作,並可能導致問題。
根據請求更新:我實際上並沒有任何對我的ELB的控制權,因爲這是由不同的團隊完成的,但是我從團隊的角度來理解,它將流量接受爲HTTPS,然後將其傳遞給服務器作爲HTTP。
請更新您的問題以包含您的ELB監聽器的配置。聽起來您的ELB配置爲接受HTTPS(負載平衡器端口),並將流量作爲HTTP(實例端口)傳遞到您的服務器,但希望驗證。您可以從AWS Web Console在EC2>負載平衡>負載平衡器下查看此信息。如果沒有將請求作爲HTTPS確實是問題,那麼這也是您可以修復它的地方。 –
@AnthonyNeace更新 - 我敢肯定你是正確的,這就是它的設置 – alfredbulbasaur
在你的'web.config'文件中,'forms'元素中的'loginUrl'值是什麼? –