0

我有一個Elastic Beanstalk Rails應用程序。我也有兩個域:EC2負載均衡器只有在某些子域上的SSL

api.example.com 
www.example.com 

我想api.example.com可訪問只有通過SSL,https://api.example.com

但是,我想www.example可以通過正常的http訪問。

目前,我在負載平衡器上有兩個監聽器,一個在端口443上,另一個在80上。

問題是,您現在還可以在不使用SSL的情況下訪問api,這是不可取的。

是否有針對我的問題的服務器級解決方案?

回答

0

Elastic Beanstalk本身不允許您在應用程序上分離SSL和非SSL路線。這是你可以做的一些事情。

  1. 將您的Elastic Beanstalk應用程序解耦爲兩個單獨的Elastic Beanstalk應用程序,一個用於SSL,另一個用於非SSL通信。

  2. 更改Rails應用程序中的路由設置。本文解釋瞭如何爲某些路由強制使用SSL:Rails 3 SSL Deprecation。您可以強制SSL爲你的API,讓www流量使用非SSL

  3. 不要使用彈性青苗和EC2與自動縮放託管的應用程序,並設置它,以便它是由Apache或nginx的門前,並創建您的具體重寫規則以確保每個URL以您希望的方式提供(www以HTTP和API以SSL)