2012-10-29 30 views
4

嗨,我不確定這是否應該發生,但是當我在終端上執行RAILS_ENV=production rails server,然後嘗試運行localhost:3000時,它會給我錯誤:Rails生產模式:SSL收到超過最大允許長度的記錄

Secure Connection Failed 

An error occurred during a connection to localhost:3000. 

SSL received a record that exceeded the maximum permissible length. 

(Error code: ssl_error_rx_record_too_long) 

我讀的地方,這可能是因爲我的網址是https://localhost:3000/而不是http://localhost:3000/與後http中的「S」?但是我不能改變它,因爲它會自動保持到https。

這是正常的嗎?我試圖在生產環境中運行它的原因是因爲我在嘗試將我的應用程序部署到heroku時出現錯誤(問題在這裏問:Rails + Heroku : ActionView::Template::Error),所以我認爲它會幫助我調試。

回答

6

當運行rails server時,嘗試通過SSL訪問Rails時,此錯誤是正常的,除非您違反默認的rails server腳本來支持SSL。你可以看到this blog post如何做到這一點。也就是說,我建議不要通過本地機器上的SSL訪問您的應用程序。

當您運行生產環境時,您的Rails應用程序中可能具有重定向到SSL的配置。嘗試暫時註釋該配置,以便您可以在生產環境中運行,而無需在本地計算機上配置SSL。

查找範圍production.rb爲:

config.force_ssl = true 

或者,看在application_controller.rb(或任何其他控制器)爲:

force_ssl 

注:它們具有相同的名稱,但在它們的工作方式非常不同。

或者,您可以通過除rails server之外的其他一些Web服務器在本地計算機上運行Rails,但這超出了此問題的範圍,您仍然必須將其配置爲支持SSL。就我個人而言,我在本地機器上安裝了帶有自簽名SSL證書的nginx(帶獨角獸),以便我可以在我的應用程序中輕鬆測試與SSL相關的行爲。另外,除了在本地機器上運行生產程序之外,您可能會考慮使用其他方式來調試應用程序,但是具體如何實現則取決於要嘗試調試的缺陷的性質。

+0

您發佈的博客文章的鏈接似乎被打破。未加載。 –

+0

@Dhrubo_moy嘗試https://gist.github.com/roloenusa/859755/bd122f265835aecac85035fd1ca80d152d06d57c – Nathan

+1

太好了。非常感謝。我試着註釋掉「config.force_ssl = true」這一行。但仍然存在SSL_ERROR_RX_RECORD_TOO_LONG錯誤。 –

4

對我來說config.force_ssl = true配置/環境/ production.rb

+0

這個遲到的答案使用已經接受的答案的不完整部分... –

+0

這不是真的布拉德。前面的作者建議「production.rb或application_controller.rb」。 **在我的情況**(希望幫助其他人)「config.force_ssl = true」**在文件「config/environments/production.rb」中設置**。 – Hugo

+0

也,當時我沒有權限將其添加爲「評論」。 – Hugo

相關問題