簡體   English   中英

在機架應用程序中,如何確定正在運行的Web服務器?

[英]Within a rack application, how can I tell which web server is running?

在機架應用程序中,如何確定哪個Web服務器作為機架處理程序運行?

例如,從config.ru中,我要打開是否正在運行WEBrick:

unless running_webrick?
  redirect_stdout_and_stderr_to_file
end

run App

def running_webrick?
   ???
end

傳遞到堆棧中每個組件的環境哈希具有SERVER_SOFTWARE密鑰。 運行此命令並觀察網頁上的輸出:

require 'rack'

class EnvPrinter

  def call env
    [200, {'content-type' => 'text/plain'}, [env.inspect]]
  end

end

run EnvPrinter.new

如果使用rackup執行,則將使用webrick作為服務器(這是默認設置),而SERVER_SOFTWARE將類似於WEBrick/1.3.1 (Ruby/1.9.3/2013-01-15) 如果使用獨角獸,它將類似於Unicorn 4.5.0 此機架式代碼根據運行在哪個服務器上返回自定義響應:

require 'rack'

class EnvPrinter

  def call env
    response = case env.fetch('SERVER_SOFTWARE')
               when /webrick/i then 'Running on webrick'
               when /unicorn/i then 'Running on unicorn'
               when /thin/i then 'Running on thin'
               else "I don't recognize this server"
               end
    [200, {'content-type' => 'text/plain'}, [response]]
  end

end

run EnvPrinter.new

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM