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
所以当我连接到
时,我的连接现在是加密的
但是...
我仍然对所有这些配置不满意,因为 url
中存在端口号
无论如何,暂时就可以了...
我遵循了 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
所以当我连接到
时,我的连接现在是加密的但是... 我仍然对所有这些配置不满意,因为 url
中存在端口号无论如何,暂时就可以了...