jdo*_*dog 6 ruby ssl ruby-on-rails
运行 Ruby 1.9.3、Rails 4.2.10 并使用 Thin 服务器进行开发。
我的应用程序在 Heroku 上使用 SSL。需要在我的本地 Mac 上运行 SSL。
我遵循了这个教程。
https://www.botreetechnologies.com/blog/enable-ssl-for-rails-development-environment-two-mines
这是我的 Procfile:
web: bundle exec rails server thin start -p 3001 -e development --ssl --ssl-verify --ssl-key-file server.key --ssl-cert-file server.crt
Run Code Online (Sandbox Code Playgroud)
这是我在跟踪中收到的错误
Invalid request: Invalid HTTP format, parsing fails.
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/request.rb:84:in `execute'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/request.rb:84:in `parse'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/connection.rb:39:in `receive_data'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:in `run_machine'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:in `run'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/backends/base.rb:73:in `start'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/server.rb:162:in `start'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/rack-1.6.4/lib/rack/handler/thin.rb:19:in `run'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/rack-1.6.4/lib/rack/server.rb:286:in `start'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
script/rails:6:in `require'
script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)
更新:
虽然我的 procfile 包含有关 cert 的信息。我通过像这样的终端手动启动我的 THIN Rails 服务器。
bundle exec rails server thin start -p 3001 -e development
Run Code Online (Sandbox Code Playgroud)
那么不确定它是否使用了 Procfile?
更新2========
尝试使用bundle exec thin start -p 3001 --ssl
将force_ssl 设置为 false
服务器启动
jn$ bundle exec thin start -p 3001 --ssl
/Users/jn/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/thin-1.6.4/lib/thin/backends/base.rb:103: warning: epoll is not supported on this platform
Using rack adapter
Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on 0.0.0.0:3001, CTRL+C to stop
Run Code Online (Sandbox Code Playgroud)
尝试点击https://localhost:3001,服务器因错误而停止
libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Encryption not available on this event-machine
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)
=====更新3:======
尝试 Puma.io 失败了同样的问题(无法建立安全连接)。尝试过 Puma-dev 甚至无法识别 .dev URl 尝试再次手动添加证书和密钥,同样的问题(无法建立安全连接)。
应用程序在http://localhost:3000加载我们的应用程序登录表单。一旦我登录,应用程序就会使用 http 加载正确的用户帐户页面,然后大约 1 秒后页面将重定向到相同的用户帐户页面,但 https 表示“无法建立安全连接”。不知道为什么浏览器强制我使用 https?应用程序中没有任何内容设置为我可以“查找/替换”的 https。
生成了一个新的 Secret_key,因为认为它短了 20 个字符,而不是 30 个。粘贴到 Secret_key.rb 中并重新启动了服务器。同样的 ssl 问题。
将应用程序更新到 2.3.1,使 puma-dev 可以正常工作。删除了config.action_cable.disable_request_forgery_protection = true引发错误的内容。
| 归档时间: |
|
| 查看次数: |
6291 次 |
| 最近记录: |