gpt4 book ai didi

ruby-on-rails-4 - ssl passenger nginx rails 4 路由将错误的端口与 https 结合在一起

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:30 26 4
gpt4 key购买 nike

我按照 rails tutorial org tuto 做了一个网站已安装 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 ...}

所以我可以访问我的网站,地址为:

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​​ on rails 应用程序中的每个文件中都评论了 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 生成的 key 不起作用,页面没有用 css 和其他资源呈现,这可能是路由问题...

非常感谢您的一点帮助!

PS:(但请不要提供帮助,例如“使用 Thin 或 Puma 或其他服务器,我有选择使用 nginx、lighthttpd 或 Apache 的限制(对我来说显而易见的答案是 nginx)”)在自己的服务器上设置自己的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 文件并做了几个 bundle install/--deployment 等...

在 production.rb 中设置

config.force_ssl = true

在 application_controller.rb 中

force_ssl

所以当我连接到时,我的连接现在是加密的

https://0.0.0.0:3000/

但是...由于 url 中存在端口号,我仍然对所有这些配置不满意

无论如何,它现在就可以了......

关于ruby-on-rails-4 - ssl passenger nginx rails 4 路由将错误的端口与 https 结合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com