我在寻找一个简单的方法,以使在通过薄独立西纳特拉应用程序运行SSL,而不必通过--ssl,--ssl-key-file并--ssl-cert-file在通过薄命令行参数.
是否可以直接在Sinatra应用程序中或通过config.ru文件定义它们?
我花了几个小时寻找这个问题的答案,但到目前为止还没有找到任何有效的方法.
pje*_*pje 11
我花了几个小时试图自己解决这个问题.
事实证明,Thin::Server.initialize放弃ssl其在选择initialization方法将其委托给它的实例(Backend,能立刻将其ssl对nil,忽略你已经传递到任何SSL选项Thin::Server.new,这意味着你必须设置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!
Run Code Online (Sandbox Code Playgroud)
这些天(sinatra 1.4.1)run!接受一个产生服务器的块.所以你可以这样做:
MyApp.run! do |server|
ssl_options = {
:cert_chain_file => '/path/to/bar.crt',
:private_key_file => '/path/to/foo.key',
:verify_peer => false
}
server.ssl = true
server.ssl_options = ssl_options
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3868 次 |
| 最近记录: |