前回
nghttpxに残された課題
trusterdはHTTP/2のサーバーなので、現状のHerokuではhttp2での
リクエストは扱えない、このため、nghttpxでHTTP/1.1でリクエストを受け付けるのだが、2点ほどHerokuでDockerの場合に引っかかった。
Failed to open errorlog file /dev/stderr
HerokuのDockerだと/dev/stderrがappユーザーで動かしているからなのか、
開けない。
解決方法
開き先を/dev/nullに向けるべく、リダイレクト指定してnghttpxを起動することで解決。
> /dev/null 2>&1
Certificate verification failed: self signed certificate
プロキシ先のhttp2サーバーが自己署名した証明書だと怒られる。
解決方法
-k オプションで、自己証明書をエラーとしないオプションがあった。
/app/trusterd/bin/nghttpx -k --client -f0.0.0.0,`echo $PORT` -b127.0.0.1,8080 >/dev/null 2>&1 &
まとめ
以上で、これまでの準備を合わせると、あとはtrusterd.conf.rbの
書き方を思い出せば、HerokuでDockerでtrusterdが動く!
Link
- https://nghttp2.org/documentation/nghttpx-howto.html
- https://devcenter.heroku.com/articles/http-routing#http-versions-supported