Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vicanso/varnish-generator
The simple way of generating general vcl file for varnish
https://github.com/vicanso/varnish-generator
generator varnish vcl
Last synced: 9 days ago
JSON representation
The simple way of generating general vcl file for varnish
- Host: GitHub
- URL: https://github.com/vicanso/varnish-generator
- Owner: vicanso
- License: mit
- Created: 2016-01-21T13:16:33.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-12-18T01:07:53.000Z (almost 6 years ago)
- Last Synced: 2024-10-10T21:19:56.313Z (about 1 month ago)
- Topics: generator, varnish, vcl
- Language: JavaScript
- Homepage:
- Size: 343 KB
- Stars: 4
- Watchers: 6
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
README
# varnish vcl generator
[![Build Status](https://travis-ci.org/vicanso/varnish-generator.svg?branch=master)](https://travis-ci.org/vicanso/varnish-generator)
[![Coverage Status](https://img.shields.io/coveralls/vicanso/varnish-generator/master.svg?style=flat)](https://coveralls.io/r/vicanso/varnish-generator?branch=master)
[![npm](http://img.shields.io/npm/v/varnish-generator.svg?style=flat-square)](https://www.npmjs.org/package/varnish-generator)
[![Github Releases](https://img.shields.io/npm/dm/varnish-generator.svg?style=flat-square)](https://github.com/vicanso/varnish-generator)Have a try [http://aslant.site/varnish-generator/](http://aslant.site/varnish-generator/)!
## Installation
```bash
$ npm install varnish-generator -g
```## RUN
```bash
varnish-generator -c ./examples/config.json -t ./examples/default.vcl
```### varnishConfig
- `name` The varnish instance's name
- `varnish` The varnish version, support `'4'` and `'5'`, default is `'5'`
- `stale` The seconds of stale, default is 3
- `version` The vcl version , default is `new Date().toISOString()`
- `timeout` The timeout setting for all directors
- `connect` The connect timeout, default is `2`
- `firstByte` The firstByte timeout, default is `5`
- `betweenBytes` The betweenBytes timeout, default is `2`
- `urlPassList` The url match(RegExp) the setting will be pass- `hisForPassTTL` The hit for pass ttl
- `hash` The hash setting
- `directors` Director list, Array
- `name` The director's name
- `prefix` The prefix of the url for the director, optional
- `host` The host for the director, optional
- `type` The algorithm of load balance, it can be 'fallback', 'hash', 'random', 'round_robin'. The default is 'round_robin'
- `timeout` The director timeout setting, if not set , it will be use the global timeout setting
- `connect` The connect timeout- `firstByte` The firstByte timeout
- `betweenBytes` The betweenBytes timeout
- `backends` The backend list, Array
- `ip` The ip of backend
- `port` The port of backend
- `weight` The weight of backend, it's used for `random` and `hash`
```json
{
"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
}
]
}
]
}```
## How to use varnish better?
Please read my [suggestion](https://github.com/vicanso/articles/blob/master/varnish-suggestion.md) about using varnish.
## How the cache of varnish is created?
![](./assets/cache_req_fsm.png)
## How to run
varnishd -f ./default.vcl -p default_ttl=0 -p default_grace=1800 -p default_keep=10 -a :8001 -F
## Using docker
```
docker pull vicanso/varnishdocker run -v $HOME/default.vcl:/etc/varnish/default.vcl -p 8001:80 -d --restart=always vicanso/varnish
```## License
MIT