我正在嘗試爲我的heroku應用設置SSL。我正在使用基於主機名的SSL加載項。 Heroku的documentation規定如下:根域上的Heroku SSL
Hostname based SSL will not work with root domains as it relies on CNAME
aliasing of your custom domain names. CNAME aliasing of root domains is
an RFC violation.
正如預期的那樣一切正常,當我訪問使用WWW子域名網站,即https://www.foo.com。當我訪問https://foo.com時,瀏覽器發出抱怨,因爲所提供的證書是針對heroku.com的。
我的結論是,我有流量重定向foo.com到www.foo.com來解決這個問題。我正在考慮以下方法:基於
1)DNS重定向
的DNS提供商Zerigo supports的重定向記錄。我在SO上遇到了類似主題question。我試過這個解決方案,它只能用於HTTP重定向(Zerigo文檔證實了這一點)。
我Zerigo配置:基於
foo.com A x.x.x.x
foo.com redirect http://www.foo.com
www.foo.com CNAME zzz.amazonaws.com
2)機架重定向
添加基於機架的中間件來執行重定向。 canonical-host寶石提供這種支持。
use CanonicalHost do
case Rails.env.to_sym
when :staging then 'staging.foo.com'
when :production then 'www.foo.com'
end
end
我想知道是否有這個(不包括切換到100 $每月IP基於SSL)
Heroku說[這裏](https://devcenter.heroku.com/articles/ssl-certificate),「你必須在」主機名「字段中輸入一個子域名。」因爲根域證書與Heroku的SSL端點不兼容。 您是否創建了根域證書或類似secure.foo.com的內容?這是否會影響'check_domain'中的'request.host'檢查? –
您能否確認它是否實際上可以使用根證書。 – Benjamin
我使用了一個根證書。我發郵件給Heroku Support,他們說這似乎是人們正在做的事情,而且似乎與一個簡單的ALIAS記錄一起工作。但他們不想贊同某個特定的DNS提供商,因此它不在官方文檔中。如果他們在文檔或這裏添加了某些內容,那將會很好。我可能還沒有意識到其他性能問題,所以我們很好奇從他們的角度來了解更多。 –