WebScoketを使う時のVarnishの設定
前回の記事で、どうやらVarnishはクライアントから送られてくるHTTPヘッダのうち"Upgrade"と"Connection"をバックエンドサーバに送ってくれないらしい、ということがわかった。
そんなわけで、set req.http.upgrade とかで調べていたらたまたま見つけたgithubのページ
https://github.com/LearnBoost/socket.io/wiki/Varnish-and-Socket.IO
この記事に則って、次のようにvclに追記したら、見事websocket通信が行えた。
sub vcl_pipe { if (req.http.upgrade) { set bereq.http.upgrade = req.http.upgrade; } } sub vcl_recv { if (req.http.Upgrade ~ "(?i)websocket") { return (pipe); } }