如何在Linux中安装并配置Varnish缓存 Linux加速Web动态内容的方法

煙雲

煙雲

2026-05-27

550人浏览

原创

varnish要真正加速web动态内容,必须监听80端口、确保后端地址可连通、且default.vcl中删除return(pass)拦截逻辑;三者缺一不可,否则缓存失效、返回503或x-cache:miss。

如何在linux中安装并配置varnish缓存 linux加速web动态内容的方法

直接上结论:Varnish 要想真正加速 Web 动态内容,必须满足三个硬性条件——监听 80 端口、后端地址可连通、default.vcl 里删掉默认的 return (pass) 拦截逻辑。缺一不可,否则你看到的全是 X-Cache: MISS,缓存形同虚设。

为什么 varnishd 启动后 curl localhost 总是 503?

这不是配置没生效,是后端根本连不上。Varnish 默认 backend 指向 127.0.0.1:8080,但你的应用很可能跑在 127.0.0.1:3000192.168.10.20:80,甚至容器里根本不是 localhost。

  • 先在 Varnish 服务器上手动测试后端连通性:curl -I http://192.168.10.20:8080,能返回 200 OK 才算过关
  • 别用域名起步,初期全写 IP + 明确端口,避免 DNS 或 /etc/hosts 配错引入干扰
  • 检查后端机器防火墙是否放行了 Varnish 服务器的 IP(比如 firewall-cmd --add-source=192.168.10.50 --permanent
  • default.vcl 里 backend 块的 .host.port 必须跟上面 curl 命令一致,一个字符都不能错

监听 80 端口失败:Address already in use 怎么办?

Varnish 默认监听 :6081,生产环境必须改 :80,但改完常卡在端口冲突。这不是 Varnish 的问题,是 nginx/httpd 正占着 80。

Qt Creator Linux版
Qt Creator Linux版

Qt Creator 20.0.1 Linux x86_64 安装程序,适合在 Linux 桌面环境中搭建 Qt/C++ 开发、编译、运行和调试工作流。

下载
  • Ubuntu/Debian:编辑 /etc/default/varnish,把 DAEMON_OPTS="-a :6081" 改成 -a :80
  • CentOS/RHEL/Rocky:编辑 /etc/sysconfig/varnish,把 VARNISH_LISTEN_PORT=6081 改成 80
  • 改完必须执行 sudo systemctl restart varnish,不能只 reload
  • 若报 Address already in use,立刻查谁在用 80:sudo ss -tulpn | grep ':80',停掉 nginxhttpd,或把它改到 8080

vcl_recv 里 return(pass) 是缓存失效的最大元凶

很多教程照搬示例,在 vcl_recv 里写了 if (req.http.Cookie) { return (pass); },结果所有带登录态的请求都绕过缓存——但 JS/CSS/图片也跟着被拖下水,完全违背加速初衷。

  • 静态资源不该受 Cookie 影响:加判断 if (req.url ~ "\.(js|css|png|jpg|woff2)$") { return (hash); },强制走缓存
  • 动态接口和管理路径才该 pass:if (req.url ~ "^/(admin|api/v1/pay|callback)") { return (pass); }
  • 别漏掉 return (hash) —— Varnish 6+ 已弃用 return (lookup),没这句就进不了缓存查找流程
  • 临时验证:把 vcl_recv 清空,只留一行 return (hash);,再测 curl -I https://yoursite.com/style.css,看 X-Cache 是否变成 HIT

beresp.ttl = 0s 和 unset resp.http.X-Varnish 的安全陷阱

后端没返回 Cache-Control 时,Varnish 默认只缓存 120 秒;有人图省事写 set beresp.ttl = 0s,结果等于彻底禁用缓存——0 秒不是“不设限”,是“不缓存”。

  • 延长缓存时间请用明确值:set beresp.ttl = 1h;set beresp.ttl = 10m;
  • sub vcl_deliver 里必须加 unset resp.http.X-Varnish;unset resp.http.Via;,否则响应头暴露 Varnish 版本,构成基础信息泄露
  • 别信“默认就安全”——新版 Varnish 不会自动隐藏这些头,不 unset 就等于把缓存架构摊开给扫描器看

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

2693

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

1671

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

1319

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

2674

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

2442

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

1660

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

1255

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

1424

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

210

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Apifox下载与安装手册
Apifox下载与安装手册

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 128人学习