mruby-ipaddress_matcherを使ってh2oでIPアドレスベースのアクセス制御をする Nov 1 h2o h2oなどのウェブサーバで、特定のパスのみアクセスを制限したいといったケースが稀にある。 httpdでSetEnvIfなんかを使って実装したあれだ。 h2o 1.5.0ではmrubyのインタフェースとしてRackが採用され、こういったアクセス制御を以下のように書くことができるようになった。 ALLOW_HOSTS = %w( 192.168.0.2 192.168.0.3 192.168.0.4 ) class Acl def call(env) if ALLOW_HOSTS.include?(env['REMOTE_ADDR']) [399, {}, []] else [403, {'Content-Type' => 'text/plain;charset=utf-8