nginxをフロントにおいて、バックエンド(upstream)にリバースプロキシするというのはよくあるけど、nginx - upstreamでkeepaliveさせるには設定がいる。数年前にやっていたのに忘れていたのでメモ。
公式のドキュメントはこちら。 Module ngx_http_upstream_module
公式のママだが、(1)httpバージョンを1.1にする (2)Connectionヘッダを空にする、の2つの設定が必要となる。
upstream http_backend { server 127.0.0.1:8080; keepalive 16; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; // http1.1する=デフォルトでKeepAliveする proxy_set_header Connection ""; //nginxはデフォルトでcloseを入れてしまうので空にする ... } }
参考
コネクションを毎回新規生成しなくなるのでスループットも上がる。
http1.1ならデフォルトでKeepAliveする、というのもすっかり忘れていた。 http2だとどうなるんだろう。