我可以在 Sinatra with Thin 中启用 SSL 吗?

2023-11-21

我正在寻找一种简单的方法来在通过 Thin 运行的独立 Sinatra 应用程序中启用 SSL,而无需通过--ssl, --ssl-key-file and --ssl-cert-file通过 Thin 命令行输入参数。

是否可以直接在 Sinatra 应用程序中或通过 config.ru 文件定义它们?

我花了几个小时寻找这个问题的答案,但到目前为止还没有找到任何有效的方法。


我只是花了几个小时试图自己解决这个问题。

事实证明Thin::Server.initialize丢弃ssl其期间的选项initialization方法(它委托给它的实例Backend,它立即设置它的ssl to nil,忽略您传入的任何 ssl 选项Thin::Server.new。这意味着您必须设置 ssl 选项after您已经实例化了一个服务器。)

操作方法如下:

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!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 Sinatra with Thin 中启用 SSL 吗? 的相关文章

随机推荐