2011-12-30 65 views
7

我使用sqlite在Ubuntu上以開發模式運行rails 3.1。 rails服務器在端口3000上運行,並且我有nginx設置爲proxy_pass端口80和443到端口3000.當我將config.force_ssl = true放入我的Application.rb並重新啓動rails服務器時,出現如下錯誤:SSL與Rails 3.1:config.force_ssl = true在開發模式下不工作

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) 

    The page you are trying to view can not be shown because the authenticity of the received data could not be verified. 
    Please contact the web site owners to inform them of this problem. Alternatively, use the command found in the help menu to report this broken site. 

當我將其更改回config.force_ssl = false並重新啓動rails服務器時,仍然收到錯誤[2011-12-30 09:48:02] ERROR bad URI 9W\x0Fe���h=9��ݔ|�#��)�/6\x00\x00H\x00��'。在軌道控制檯中。如果我還清除瀏覽器緩存,則此消失並且一切恢復正常。但是,如何獲得force_ssl = true

這裏是我的application.rb中的一部分:

module Regi 
     class Application < Rails::Application 
     # Settings in config/environments/* take precedence over those specified here. 
     # Application configuration should go into files in config/initializers 
     # -- all .rb files in that directory are automatically loaded. 
     config.generators do |g| 
      g.template_engine :haml 
     end 
     config.force_ssl = true 
     end 
    end   

這裏是我的/ etc/nginx的/啓用的站點 - /默認:

server { 
    #listen 80; ## listen for ipv4; this line is default and implied 
    #listen [::]:80 default ipv6only=on; ## listen for ipv6 

    root /usr/share/nginx/www; 
    index index.html index.htm; 

    # Make site accessible from http://localhost/ 
    server_name localhost; 

    location/{ 
      # First attempt to serve request as file, then 
      # as directory, then fall back to index.html 
      proxy_pass  http://localhost:3000; 
      try_files $uri $uri/ /index.html; 
    } 


    #error_page 404 /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    #error_page 500 502 503 504 /50x.html; 
    #location = /50x.html { 
    #  root /usr/share/nginx/www; 
    #} 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    # 
    #location ~ \.php$ { 
    #  fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    #  # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 
    # 
    #  fastcgi_pass 127.0.0.1:9000; 
    #  fastcgi_index index.php; 
    #  include fastcgi_params; 
    #} 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    #location ~ /\.ht { 
    #  deny all; 
    #} 
} 

# HTTPS server 
server { 
    listen  443; 
    server_name localhost; 

    #charset koi8-r; 

    #access_log logs/host.access.log main; 
    ssl on; 
    ssl_certificate /usr/local/conf/ssl_keys/server.crt; 
    ssl_certificate_key /usr/local/conf/ssl_keys/server.key; 

    location/{ 
     proxy_pass  http://localhost:3000; 
     proxy_set_header X-Real-IP $remote_addr; 
     # root html; 
     # index index.html index.htm; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root html; 
    } 
} 

回答

2

我遇到完全相同的錯誤當我配置一個nginx ssl服務器時出現錯誤。這是因爲我沒有ssl crt和key.And在你的nginx配置文件中,我注意到有crt和key.So你確定crt和key都可以? 如果你不確定,你可以嘗試下面的鏈接來創建self_assigned crt。 http://devcenter.heroku.com/articles/ssl-certificate-self

p.s.我想附加這個答案作爲一個小的評論,但似乎我沒有這個權限

相關問題