我正在寻找一种简单的方法来在通过 Thin 运行的独立 Sinatra 应用程序中启用 SSL,而无需传递 --ssl
、--ssl-key-file
和 --ssl-cert-file
参数通过瘦命令行。
是否可以直接在 Sinatra 应用程序中或通过 config.ru 文件定义它们?
我花了几个小时寻找这个问题的答案,但到目前为止还没有找到任何有效的方法。
最佳答案
我只是花了几个小时试图自己解决这个问题。
事实证明,Thin::Server.initialize
在其initialization
方法中丢弃了ssl
选项(它委托(delegate)给它的Backend
,它会立即将其 ssl
设置为 nil
,忽略您传递给 Thin::Server.new
的任何 ssl 选项>。这意味着您必须在实例化服务器后设置 ssl 选项。)
方法如下:
class App < Sinatra::Base
# ...
def self.run!
rack_handler_config = {}
ssl_options = {
:private_key_file => '/path/to/foo.key',
:cert_chain_file => '/path/to/bar.crt',
:verify_peer => false,
}
Rack::Handler::Thin.run(self, rack_handler_config) do |server|
server.ssl = true
server.ssl_options = ssl_options
end
end
end
App.run!
关于ssl - 我可以使用 Thin 在 Sinatra 中启用 SSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11405161/