使用Rack,Puma和Sinatra启用HTTPS?

时间:2017-04-14 23:19:55

标签: ruby https sinatra rack puma

我有一个使用Sinatra,Rack和Puma构建的Ruby Web应用程序。我正在使用Sinatra来实现控制器(MVC模式),每个控制器处理不同的路由,每个控制器类扩展Sinatra::Base。我想启用TLS,以便通过HTTPS提供与服务器的所有连接。

My Rack config.ru看起来像:

require 'sinatra'
require 'rack'

# Start my database ...

run Rack::URLMap.new(
    '/api/foo' => FooController.new,
    '/api/bar' => BarController.new
)

Puma由Rack自动拾取。

如何启用HTTPS?首先,我很高兴使用自签名证书,但如何使用有效证书配置服务器?这些似乎都没有记录在案,我觉得很令人沮丧。我是否可以忽略一个选项,我可以设置在我的Rack配置文件的顶层,可能是set :ssl => true

类似但毫无结果的SO帖子: How to make Sinatra work over HTTPS/SSL? How to enable SSL for a standalone Sinatra app?

1 个答案:

答案 0 :(得分:0)

既然你提到你使用过Puma,你可以在他们的文档中找到它:

  

需要一点安全吗?使用SSL套接字!

$ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'

在生产部署中,专用负载均衡器(例如nginx,HAProxy,AWS ELB)通常负责SSL终止,并通过内部网络将纯HTTP流量转发到应用服务器。这些重型Web服务器通常更快,更稳定,更好地进行审计。