Have a try http://aslant.site/varnish-generator/!
$ npm install varnish-generator -gvarnish-generator -c ./examples/config.json -t ./examples/default.vcl-
nameThe varnish instance's name -
varnishThe varnish version, support'4'and'5', default is'5' -
staleThe seconds of stale, default is 3 -
versionThe vcl version , default isnew Date().toISOString() -
timeoutThe timeout setting for all directors-
connectThe connect timeout, default is2 -
firstByteThe firstByte timeout, default is5 -
betweenBytesThe betweenBytes timeout, default is2
-
-
urlPassListThe url match(RegExp) the setting will be pass -
hisForPassTTLThe hit for pass ttl -
hashThe hash setting -
directorsDirector list, Array-
nameThe director's name -
prefixThe prefix of the url for the director, optional -
hostThe host for the director, optional -
typeThe algorithm of load balance, it can be 'fallback', 'hash', 'random', 'round_robin'. The default is 'round_robin' -
timeoutThe director timeout setting, if not set , it will be use the global timeout setting-
connectThe connect timeout -
firstByteThe firstByte timeout -
betweenBytesThe betweenBytes timeout
-
-
backendsThe backend list, Array-
ipThe ip of backend -
portThe port of backend -
weightThe weight of backend, it's used forrandomandhash
-
-
{
"name": "varnish-test",
"stale": 2,
"varnish": "4",
"timeout": {
"connect": 1,
"firstByte": 2,
"betweenBytes": 2
},
"urlPassList": [
"cache-control=no-cache"
],
"hisForPassTTL": 300,
"hash": [
"req.url",
[
"req.http.host",
"server.ip"
]
],
"directors": [
{
"name": "timtam",
"prefix": "/timtam",
"type": "fallback",
"timeout": {
"connect": 1,
"firstByte": 1,
"betweenBytes": 1
},
"backends": [
{
"ip": "127.0.0.1",
"port": 3000
},
{
"ip": "127.0.0.1",
"port": 3010
}
]
},
{
"name": "dcharts",
"prefix": "/dcharts",
"host": "dcharts.com",
"type": "hash",
"hashKey": "req.http.cookie",
"backends": [
{
"ip": "127.0.0.1",
"port": 3020,
"weight": 5
},
{
"ip": "127.0.0.1",
"port": 3030,
"weight": 3
}
]
},
{
"name": "vicanso",
"host": "vicanso.com",
"type": "random",
"backends": [
{
"ip": "127.0.0.1",
"port": 3040,
"weight": 10
},
{
"ip": "127.0.0.1",
"port": 3050,
"weight": 5
}
]
},
{
"name": "aslant",
"backends": [
{
"ip": "127.0.0.1",
"port": 8000
}
]
}
]
}
Please read my suggestion about using varnish.
varnishd -f ./default.vcl -p default_ttl=0 -p default_grace=1800 -p default_keep=10 -a :8001 -F
docker pull vicanso/varnish
docker run -v $HOME/default.vcl:/etc/varnish/default.vcl -p 8001:80 -d --restart=always vicanso/varnish
MIT
