sinatraでDNS逆引きを止める

Sinatraは簡単便利ですね。

VM上のLinuxでSinatraを動作させ、ホストであるWindowsのブラウザからアクセスするようなことは、よくあると思います。
この際、アクセス元をログに記載するためのDNS逆引き(gethostbyaddr)が走り、ネームサーバや/etc/hostsが設定されていないと、タイムアウトを待つため極端に遅くなります。
(1アクセスごとに10秒程度かかる)

よく使うと思われるWebrickでもこの機能を無効にできますが、Sinatra側に特にオプションはないので、強引に無効にするコードスニペットを貼っておきます。

require 'sinatra'                                                                                             
                                                                                                              
class Rack::Handler::WEBrick                                                                                  
  class << self                                                                                               
    alias_method :run_original, :run                                                                          
  end                                                                                                         
  def self.run(app, options={})                                                                               
    options[:DoNotReverseLookup] = true                                                                       
    run_original(app, options)                                                                                
  end                                                                                                         
end                                                                                                           
                                                                                                              
get '/' do                                                                                                
  "hello, world"                                                                                              
end 

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(15区分 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、CITP、Ruby Programmer Goldなどを保有。

babaの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ