[英]Rails: Why does my server redirect http to https
我有一個我在Heroku上構建的rails應用程序,我已將其配置為在那里使用SSL。 現在我轉向AWS EC2,我想讓我的應用程序版本在沒有SSL的情況下運行。 完成后,我將在稍后添加SSL功能。
我的堆棧是Puma + Nginx + PostgreSQL,我正在使用Rails 4.2.4,Ruby 2.2.3和Capistrano 3.4.0。
我記得在我的應用程序中,我曾經插入過該行
config.force_ssl = true
在config / environments / production.rb中。 我評論了這一點,希望我的應用程序能夠重新使用http。 但事實並非如此:即使在評論該行之后,每當我訪問我的EC2公共IP(52.35.82.113)時,請求都會在端口80(http)上發送,並被重定向到端口443(https)。
當我在我返回的EC2實例上運行curl -v http://localhost
時,可以更清楚地看到這一點:
* Rebuilt URL to: http://localhost/
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
* Server nginx/1.4.6 (Ubuntu) is not blacklisted
< Server: nginx/1.4.6 (Ubuntu)
< Date: Sat, 12 Dec 2015 12:22:56 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: https://localhost/
<
* Connection #0 to host localhost left intact
對於這些東西,我不是很有經驗。 我認為最初的問題是我的Nginx的配置,在我剛才的問題在這里有人建議我,有什么錯我的Nginx的配置和重定向從Rails的到來。 我懷疑是這種情況,因為我在Nginx中看不到可以強制執行重定向的任何內容,但如果您認為問題可能存在,那么您可以在上面的鏈接中看到很多相關代碼。
除了上面打印的force_ssl之外,Rails中的其他內容可能導致重定向?
謝謝大家的幫助。 如果您有任何疑問或需要更多信息,請與我們聯系!
在Rails中,您可以使用配置文件強制網站范圍的SSL(就像您正在做的那樣),或者您可以選擇哪些端點將使用SSL並在控制器級別使用force_ssl
類方法。
也許您在application_controller.rb
上使用了該方法,或者哪個控制器正在為根路徑提供服務而忘記了它。 你可以在Rails文檔中找到這種機制的例子: http : //api.rubyonrails.org/classes/ActionController/ForceSSL/ClassMethods.html
force_ssl(options = {})鏈接強制請求到此特定控制器或指定的操作在HTTPS協議下。
如果您因任何原因需要禁用它(例如開發),那么您可以使用:if或:unless條件。
class AccountsController < ApplicationController
force_ssl if: :ssl_configured?
def ssl_configured?
!Rails.env.development?
end
end
我之前嘗試過在生產服務器上評論這一行並且它沒有改變任何東西,所以不是評論只是將true更改為false,如:
config.force_ssl = false
我也遇到過這個問題(rails + puma + nginx)。 每個redirect_to
都發送到https
,即使來自http
。
在vhost.conf
有這一行:
proxy_set_header X-Forwarded-Proto https;
redirect_to
在更改后正常工作
proxy_set_header X-Forwarded-Proto http;
我有同樣的問題。 我的解決方案是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.