|
|
|
Configuring Varnish Cache
|
|
|
|
==========================
|
|
|
|
|
|
|
|
To be sure Varnish will work properly with NodeBB check that your configuration ``/etc/varnish/default.vcl`` is optimized for **websockets**.
|
|
|
|
|
|
|
|
.. code::
|
|
|
|
|
|
|
|
backend nodebb {
|
|
|
|
.host = "127.0.0.1"; # your nodebb host
|
|
|
|
.port = "4567"; # your nodebb port
|
|
|
|
}
|
|
|
|
|
|
|
|
sub vcl_recv {
|
|
|
|
|
|
|
|
# Pipe websocket connections directly to Node.js
|
|
|
|
if (req.http.Upgrade ~ "(?i)websocket") {
|
|
|
|
set req.backend = nodebb;
|
|
|
|
return (pipe);
|
|
|
|
}
|
|
|
|
|
|
|
|
# NodeBB
|
|
|
|
if (req.http.host == "forum.yourwebsite.com") { # change this to match your host
|
|
|
|
if (req.url ~ "^/socket.io/") {
|
|
|
|
set req.backend = nodebb;
|
|
|
|
return (pipe); # return pass seems not working for websockets
|
|
|
|
}
|
|
|
|
return (pass); # don't cache
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sub vcl_pipe {
|
|
|
|
# Need to copy the upgrade header
|
|
|
|
if (req.http.upgrade) {
|
|
|
|
set bereq.http.upgrade = req.http.upgrade;
|
|
|
|
}
|
|
|
|
}
|