ssl passenger nginx rails 4 路由将错误的端口与 https 结合

ssl passenger nginx rails 4 routing combine wrong port with https

我遵循了 rails 教程组织教程并制作了一个网站 已安装 passenger,nginx。
在 heroku 上的 prod env 上完美运行=>
http://klat.herokuapp.com/(应用程序未完成但总比没有好)

这里我使用 =>

config.force_ssl = true

(仅适用于 heroku)
我的路线来自 routes.rb =>

Rails.application.routes.draw do
    get 'users/new'
    root                        'static_pages#home'
    get 'help'      =>          'static_pages#help'
    get 'about'     =>          'static_pages#about'
    get 'contact'   =>          'static_pages#contact'
    get 'login'     =>          'static_pages#login'
    get 'signup'    =>          'users#new'
    resources :users
end


~/.bash_profile 和 ~/.bashrc 得到了

#a generated key
export SECRET_KEY_BASE="my_very_big_generated_key"
export SECRET_TOKEN="my_very_big_generated_key"

我用 openssl 生成了我自己的证书

ls ../cert/
server.crt  server.csr  server.key  server.key.org  server.pem

然后我在本地用这个命令启动我的服务器

passenger start -p 2000 --ssl-certificate ../cert/server.csr  --ssl-port 20001  -e production

我花了两天时间才走到这一步,但我找不到为什么我的服务器从

开始
http ://0.0.0.0:2000/

并重定向到

https ://0.0.0.0:2000

没有一页可以访问:错误

An error occurred during a connection to 0.0.0.0:2000. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long) 

但在日志中我们清楚地看到

App 12832 stdout: 
App 12854 stdout: 
App 12854 stdout: Started HEAD "/" for 127.0.0.1 at 2015-04-24 18:09:30 +0200
App 12854 stdout: Processing by StaticPagesController#home as HTML
{... rendering homepage wiht _header.erb _footer.erb etc ...}

所以我可以在地址 css 访问我的未呈现的网站:

http: //127.0.0.1:2000/

而且我仍然从我的 nginx 服务器收到这些消息

ActionController::RoutingError (No route matches [GET] "/images/rails.png"):

ActionController::RoutingError (No route matches [GET] "/stylesheets/application.css"):

{...and more ...}

我在 ruby 上 rails app all ssl_force 的每个文件中都发表了评论 当我在 config/production.rb

中取消注释时
config.force_ssl = true

对于本地使用,我得到 在

http ://127.0.0.1:2000/ => redirect to https ://127.0.0.1:2000/ and get => (Error code: ssl_error_rx_record_too_long)
http ://127.0.0.1 => unable to locate
https ://127.0.0.1 => unable to locate
http ://127.0.0.1:2000 => unable to locate
http ://127.0.0.1:2001 => unable to locate
https ://127.0.0.1:2000 => unable to locate
https ://127.0.0.1:2001 => unable to locate

只是找不到为什么我的 openssl 生成的密钥不起作用,页面没有用 css 和其他资源呈现,这可能是路由问题...

非常感谢您的一点帮助!

PS:(不过请不要帮忙如"use Thin or Puma or another server, i have a constraint to use at choice nginx, lighthttpd or Apache (the obvious answer is nginx for me)") 在我自己的服务器上设置自己的ssl认证也是我学习中的一个限制

终于

我为正确启动服务器而执行的命令是

passenger start --ssl-certificate ../cert/server.crt  --ssl-certificate-key ../cert/server.key  -e production --ssl

不指定 ssl 端口和标准端口

我添加了

    gem 'rack-ssl', :require => 'rack/ssl'

到我的 gem 文件 并做了几个包 install/--deployment 等...

设置于production.rb

config.force_ssl = true

并在 application_controller.rb

force_ssl

所以当我连接到

时,我的连接现在是加密的

https://0.0.0.0:3000/

但是... 我仍然对所有这些配置不满意,因为 url

中存在端口号

无论如何,暂时就可以了...