H2O 2.1以降からアクセス制御が大分簡単にかけるようになったので server-statusページに対して行った。
server-status.rbというファイルでACLを書いていく 404で返したかったのでdenyではなくrespondを使っています。
paths: /server-status: mruby.handler-file: /etc/h2o/mruby/server-status.rb status: ON
require "trie_addr.rb" trie = TrieAddr.new.add(["許可するIP"]) acl { respond(404, {}, ["File Not Found"]) { path.start_with?("/server-status") && !trie.match?(addr) } }
参考 Access Control - Configure - H2O H2O x mrubyで人はどれだけ幸せになれるのか