wodby/varnishVarnish HTTP加速器容器镜像是一个基于Varnish的通用Docker镜像,用于实现HTTP缓存代理功能。Varnish作为高性能的HTTP加速器,通过缓存频繁访问的内容(静态资源、API响应等),显著减少后端服务器负载,提升Web应用的响应速度和吞吐量。该镜像旨在提供开箱即用的Varnish部署方案,支持自定义配置,适用于各类需要HTTP加速的Web场景。
从Docker Hub拉取最新版本镜像:
bashdocker pull wodby/varnish:latest
如需指定Varnish版本(如7.4),可使用标签:
bashdocker pull wodby/varnish:7.4
默认配置下,Varnish监听80端口,后端指向localhost:8080,缓存内存为128M:
bashdocker run -d --name varnish -p 80:80 wodby/varnish:latest
通过环境变量指定后端服务器、缓存内存大小:
bashdocker run -d --name varnish \ -p 80:80 \ -e VARNISH_BACKEND_HOST=webapp \ # 后端服务器主机名/IP -e VARNISH_BACKEND_PORT=3000 \ # 后端服务器端口 -e VARNISH_STORAGE_SIZE=512M \ # 缓存内存大小(支持M/G单位) wodby/varnish:latest
创建docker-compose.yml,集成Varnish与后端Web服务(如Nginx):
yamlversion: '3.8' services: varnish: image: wodby/varnish:latest ports: - "80:80" environment: - VARNISH_BACKEND_HOST=web - VARNISH_BACKEND_PORT=80 - VARNISH_STORAGE_SIZE=1G - VARNISH_VCL_CONF=/etc/varnish/default.vcl # 自定义VCL文件路径 volumes: - ./varnish/default.vcl:/etc/varnish/default.vcl # 挂载本地VCL文件 depends_on: - web web: image: nginx:alpine volumes: - ./web:/usr/share/nginx/html # 后端静态资源
| 环境变量 | 描述 | 默认值 |
|---|---|---|
VARNISH_BACKEND_HOST | 后端服务器主机名或IP | localhost |
VARNISH_BACKEND_PORT | 后端服务器端口 | 8080 |
VARNISH_STORAGE_SIZE | 缓存存储大小(支持M/G单位) | 128M |
VARNISH_PORT | Varnish监听端口 | 80 |
VARNISH_VCL_CONF | VCL配置文件路径(容器内路径) | /etc/varnish/default.vcl |
VARNISH_LOG_LEVEL | 日志级别(debug/info/warning) | info |
Varnish通过VCL(Varnish Configuration Language)定义缓存策略,默认VCL文件路径为/etc/varnish/default.vcl。如需自定义缓存规则,可挂载本地VCL文件至容器内VARNISH_VCL_CONF指定路径。
示例:自定义VCL文件(default.vcl)
vclvcl 4.1; # 定义后端服务器(可通过环境变量动态替换) backend default { .host = "${VARNISH_BACKEND_HOST}"; .port = "${VARNISH_BACKEND_PORT}"; } # 收到客户端请求时执行 sub vcl_recv { # 对静态资源(.js/.css/.png等)设置较长缓存 if (req.url ~ "(?i)\.(jpg|jpeg|png|gif|ico|css|js)$") { set req.ttl = 1h; # 缓存1小时 return (hash); } # 对API路径(/api/*)不缓存 if (req.url ~ "^/api/") { return (pass); # 直接转发至后端 } } # 缓存命中时执行 sub vcl_hit { if (obj.ttl > 0s) { return (deliver); } return (miss); } # 缓存未命中时执行 sub vcl_miss { return (fetch); }
挂载自定义VCL:
通过-v参数将本地default.vcl挂载至容器:
bashdocker run -d --name varnish \ -p 80:80 \ -e VARNISH_BACKEND_HOST=webapp \ -e VARNISH_VCL_CONF=/etc/varnish/custom.vcl \ -v $(pwd)/default.vcl:/etc/varnish/custom.vcl \ wodby/varnish:latest
Varnish日志默认输出至容器stdout,可通过docker logs查看:
bashdocker logs -f varnish
Varnish提供varnishstat工具查看缓存命中率、请求量等指标,可通过docker exec执行:
bashdocker exec -it varnish varnishstat
bashdocker exec -it varnish service varnish restart
bashdocker exec -it varnish varnishreload
bashdocker exec -it varnish sh




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务