H2OでHTTPS->HTTPのリバースプロキシを立てる

(2017-03-02)

良くチューニングされたNginxと同じくらい速いと 評判のHTTP/2サーバーH2Oでリバースプロキシを立ててみる。 HTTP/2だけではなく1.xにも対応しているので古い環境などでも大丈夫。

設定は Reverse ProxyHTTP to HTTPSの サンプルをもとにして書いた。

hosts:
  "*":
    listen:
      port: 443
      ssl:
        certificate-file: /etc/h2o/oreore.crt
        key-file:         /etc/h2o/server.key
    paths:
      "/":
        proxy.reverse.url: http://127.0.0.1:3000/

access-log: /dev/stdout
error-log: /dev/stderr

とりあえずオレオレ証明書で試してみる。

$ openssl genrsa 2048 > server.key # private key
$ openssl req -new -key server.key > server.csr # certificate signing request 
$ openssl x509 -days 365000 -req -signkey server.key < server.csr > oreore.crt # oreore certificate

Dockerで動かす。lkwg82/h2o.docker

$ vi h2o.conf
$ docker run -v $(pwd):/etc/h2o --net=host --name h2o --restart=always -itd lkwg82/h2o-http2-server
$ curl --insecure https://127.0.0.1 # -> :3000

Chromeでアクセスして、Developer ToolsのNetworkで右クリックでProtocolにチェックを入れてh2と表示されていたら HTTP/2で通信している。