【问题标题】:How can I have a clean output with thin and ssl?如何使用瘦和 ssl 获得干净的输出?
【发布时间】:2012-11-30 14:55:09
【问题描述】:

我使用的是 Rails 3.0.x,但我遇到了输出稀疏的问题。

当我使用时:

rails server thin

Thin 显示处理的请求列表,并记录它们,几乎与 webrick 完全一样。这很棒,但是我没有找到任何方法在 ssl 模式下通过此命令使用 Thin。

要在 ssl 模式下使用 Thin,如 here 所示,我使用以下命令(加上 ssl 参数):

thin start --ssl ...

使用这个命令,日志还是不错的,但是 Thin 没有在标准输出中输出任何东西。

所以我尝试了:

thin start --trace

但是现在 Thin 在标准输出中写入所有请求和所有响应(!),包括 javascript、图像等。

Thin 在 ssl 模式下,有没有办法像 webrick 一样输出所有处理的请求?

【问题讨论】:

    标签: ruby-on-rails ssl thin


    【解决方案1】:

    使用以下命令启动 Thin 时:

    rails server thin
    

    可能的选项在 Rack::Server#start: 中从 Rack 传播到 Thin:

    server.run wrapped_app, options
    

    但是在 Rack::Handler::Thin#run 中,我们可以看到处理程序没有使用这些选项:

     module Rack
      module Handler
        class Thin
          def self.run(app, options={})
            app = Rack::Chunked.new(Rack::ContentLength.new(app))
            server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
                                        options[:Port] || 8080,
                                        app)
            yield server if block_given?
            server.start
          end
        end
      end
    end
    

    通过命令行在 ssl 模式下使用 Thin:

    thin start --ssl
    

    选项在 Thin::Runner#parser 中解析,然后在 Controllers::Controller#start 中使用

    我建议使用类似于 Controllers::Controller#start 的内容对 Rack::Handler::Thin#run 进行猴子补丁。

    结果会是这样的:

      module Rack
        module Handler
          class Thin
            def self.run(app, options={})
              app = Rack::Chunked.new(Rack::ContentLength.new(app))
              server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
                                          options[:Port] || 8080,
                                          app)
              server.ssl = true
              server.ssl_options = { :private_key_file => PATH_TO_KEY_FILE, :cert_chain_file => PATH_TO_CERT_FILE }
              yield server if block_given?
              server.start
            end
          end
        end
      end
    

    【讨论】:

    • 你能把这个链接到github上的源代码吗?我好像在那儿找不到。
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2019-09-27
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多