当前位置: 首页 > news >正文

如何在 Ubuntu 22.04 上安装 Varnish HTTP 教程

简介

在本教程中,我们将学习如何在 Ubuntu 22.04 服务器上安装和配置 Varnish HTTP。

Varnish 是一款高性能的 HTTP 加速器,旨在提高内容密集型动态网站的速度。它通过将网页缓存在内存中来工作,从而减少 Web 服务器的负载,并显著加快用户访问你的网站所需的时间。

准备工作:

  • 一台已安装 Ubuntu 22.04 的专用服务器 或 KVM VPS。
  • 系统上已安装 Apache 或 Nginx。
  • 具备基本的 Linux 命令知识。

在本教程中,我们将涵盖:

  • 在 Ubuntu 22.04 上安装 Varnish。
  • 配置 Varnish 以与现有的 Web 服务器(Nginx 或 Apache)配合使用。
  • 为你的网站设置缓存规则。
  • 测试并验证 Varnish 是否正确缓存。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:更新 Ubuntu 系统

在安装任何软件包之前,请更新你的系统,以确保你拥有最新的软件包信息。

sudo apt update && sudo apt upgrade -y

第二步:安装 Varnish

Varnish 软件包在 Ubuntu 的默认存储库中可用。要安装它,请使用以下命令:

sudo apt install varnish -y

安装完成后,检查 Varnish 的版本以验证安装:

varnishd -V

这将显示已安装的 Varnish 版本,确认安装成功。

varnishd (varnish-7.1.1 revision 7cee1c581bead20e88d101ab3d72afb29f14d87a)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2022 Varnish Software

第三步:配置 Varnish 以与 Apache 或 Nginx 配合使用

配置 Varnish 与 Apache

修改 Apache 的端口:

默认情况下,Apache 在 80 端口上运行,这与 Varnish 将用于接受用户请求的端口相同。要解决此冲突,我们需要将 Apache 的端口更改为 8080

打开 Apache 配置文件:

sudo nano /etc/apache2/ports.conf

将以下行从:

Listen 80

更改为:

Listen 8080

更新 Apache 虚拟主机配置:

打开你的 Apache 虚拟主机配置文件(通常位于 /etc/apache2/sites-available/000-default.conf):

sudo nano /etc/apache2/sites-available/000-default.conf

更改 <VirtualHost> 指令以使用端口 8080 而不是端口 80

<VirtualHost *:8080>

重启 Apache:

进行这些更改后,重启 Apache 以应用更改:

sudo systemctl restart apache2

配置 Varnish 在端口 80 上提供服务:

更新 Varnish 端口配置:

默认情况下,Varnish 监听端口 6081。我们需要将其更改为端口 80,这是标准的 HTTP 端口。为此,请打开 Varnish 服务配置文件:

sudo nano /etc/systemd/system/multi-user.target.wants/varnish.service

找到以下行:

ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -s malloc,256m

将其更改为:

ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -s malloc,256m

重启 Varnish:

修改配置文件后,重新加载 systemd 配置并重启 Varnish 以应用更改:

sudo systemctl daemon-reload
sudo systemctl restart varnish

现在,Varnish 将在端口 80 上提供请求,而 Apache 将在端口 8080 上运行。

配置 Varnish 与 Nginx

如果你使用 Nginx 作为你的 Web 服务器,则配置步骤与 Apache 非常相似。

修改 Nginx 的端口:

打开位于 /etc/nginx/sites-available/default 中的 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/default

更改 listen 指令以使用端口 8080

listen 8080 default_server;

重启 Nginx:

进行更改后,重启 Nginx:

sudo systemctl restart nginx

配置 Varnish 监听端口 80

与 Apache 设置类似,修改 Varnish 配置,如上面 Apache 部分所示,将 Varnish 的监听端口更改为 80

第四步:配置 Varnish 进行缓存

Varnish 的配置文件称为 Varnish 配置语言 (VCL) 文件,它控制 Varnish 在收到请求时的行为。默认的 VCL 文件位于 /etc/varnish/default.vcl

打开 VCL 文件:

sudo nano /etc/varnish/default.vcl

基本后端配置

在这里,你可以定义你的后端服务器(Apache 或 Nginx),Varnish 将从中缓存内容。默认情况下,Varnish 会将请求发送到端口 8080 上的 localhost,这是我们之前设置的。

backend default {.host = "127.0.0.1";.port = "8080";
}

缓存静态内容

你可以配置 Varnish 缓存静态资产,例如 CSS、JavaScript 和图像。将此规则添加到 vcl_recv 函数:

sub vcl_recv {if (req.url ~ "\\.(png|jpg|jpeg|gif|css|js)$") {return (hash);}
}

这将告诉 Varnish 缓存静态文件。

处理 Cookies

你可能希望阻止 Varnish 为已登录用户(或设置了 cookie 的用户)缓存页面。你可以通过如下修改 vcl_recv 函数来实现:

sub vcl_recv {if (req.http.Cookie) {return (pass);}
}

这将告诉 Varnish 如果存在 cookie,则绕过缓存。

第五步:测试 Varnish 缓存

要检查 Varnish 是否正确缓存,你可以使用 curl 命令。向你的网站发出请求并查找 X-Cache 标头:

curl -I http://your-domain.com>

你应该看到类似这样的内容:

HTTP/1.1 200 OK
X-Cache: MISS

这意味着该请求不是来自缓存(因为它是第一个请求)。如果你再次运行该命令,你应该看到:

HTTP/1.1 200 OK
X-Cache: HIT
X-Varnish: 2

这表明该页面是从 Varnish 的缓存中提供的。

第六步:监控 Varnish

你可以使用 varnishstat 命令监控 Varnish 的性能,该命令提供有关缓存命中、未命中和其他性能指标的实时统计信息。

varnishstat

这将为你提供有关 Varnish 如何处理请求的详细信息。

结论

在本教程中,我们已经了解了如何在 Ubuntu 22.04 服务器上安装和配置 Varnish HTTP,并将其与 Web 服务器(Apache 或 Nginx)集成。Varnish 通过将网页缓存在内存中并减少最终用户的加载时间,显著提高了动态内容密集型网站的速度和性能。通过正确的配置,Varnish 可以成为提升你的网站性能的强大工具。

  • 雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
  • 我的博客:https://blog.ivwv.site

相关文章:

如何在 Ubuntu 22.04 上安装 Varnish HTTP 教程

简介 在本教程中&#xff0c;我们将学习如何在 Ubuntu 22.04 服务器上安装和配置 Varnish HTTP。 Varnish 是一款高性能的 HTTP 加速器&#xff0c;旨在提高内容密集型动态网站的速度。它通过将网页缓存在内存中来工作&#xff0c;从而减少 Web 服务器的负载&#xff0c;并显…...

网络安全概念详解

人们对网络安全工程师的有哪些误会&#xff1f; “你们搞安全的盗个微信号/ QQ号应该很简单吧&#xff1f;” 说起来&#xff0c;我们经常说安全、安全&#xff0c;网络安全到底是什么&#xff1f; 一、什么是网络安全&#xff1f; “网络安全是指网络系统的硬件、软件及其…...

【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)

前言&#xff1a;音乐播放器是前端开发中的一个经典项目&#xff0c;通过它可以掌握很多核心技术&#xff0c;如音频处理、DOM操作、事件监听、动画效果等。这个项目不仅能提升前端开发的技能&#xff0c;还能让开发者深入理解JavaScript与HTML的协同作用。 页面展示&#xff1…...

PawSQL性能巡检平台 (3) - 慢查询采集和优化

在数据库运维管理中&#xff0c;慢查询一直是影响系统性能的重要因素。本文将详细介绍PawSQL数据库性能巡检平台在慢查询管理和优化方面的功能特性&#xff0c;帮助数据库管理员更好地应对性能挑战。 一、PawSQL巡检平台慢查询管理概述 PawSQL平台提供了全面的慢查询管理功能&…...

在docker中对MySQL快速部署与初始数据

1.准备工作 将已经准备好的Dockerfile文件与数据库初始化脚本init.sql放到 /usr/local目录中。 Dockerfile文件内容&#xff1a; FROM mysql:5.7 WORKDIR /docker-entrypoint-initdb.d ADD init.sql . FROM 代表来自mysql5.7的镜像&#xff0c;作为基准镜像。 WORKDIR设置工…...

Mysql(MGR)和ProxySQL搭建部署-Kubernetes版本

一、Mysql(MGR) 1.1 statefulSet.yaml apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: mysqlname: mysqlnamespace: yihuazt spec:replicas: 3serviceName: mysql-headlessselector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:affinity:p…...

将现有Web 网页封装为macOS应用

文章目录 方式一&#xff1a;Unite for macOS方式二&#xff1a;Web2Desk方式三&#xff1a;Nativefier方式四&#xff1a;Flutter Flutter WebView Plugin总结 方式一&#xff1a;Unite for macOS Unite 是一款专为 macOS 设计的工具&#xff0c;可以将任意 Web 页面快速封装…...

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片

药片(药丸)和胶囊识别数据集&#xff0c;使用yolo&#xff0c;pasical voc xml, coco json格式标注&#xff0c;可识别药片和胶囊两种标签&#xff0c;2445张原始图片 数据集分割 训练组80&#xff05; 1967图片 有效集13% 317图片 测试集7% 161图片 预处…...

在Linux的世界中怎么玩转定时器任务

定时器使用 先是看到一段使用Linux Sevice服务的脚本&#xff0c;意外发现在ExecStart启动脚本中&#xff0c;它利用无限循环做定时任务的事情&#xff0c;非常突兀&#xff01; 觉得既然用得了Linux Service&#xff0c;那么&#xff0c;与之配套的cron定时器服务是否更应该…...

HTML——20 自定义属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>自定义属性</title></head><body><a href"https://ai.m.taobao.com" 自定义属性"属性值">淘宝网</a><a href"h…...

2025:OpenAI的“七十二变”?

朋友们&#xff0c;准备好迎接AI的狂欢了吗&#xff1f;&#x1f680; 是不是跟我一样&#xff0c;每天醒来的第一件事就是看看AI领域又有什么新动向&#xff1f; 尤其是那个名字如雷贯耳的 OpenAI&#xff0c;简直就是AI界的弄潮儿&#xff0c;一举一动都牵动着我们这些“AI发…...

mac docker部署jar包流程

mac docker部署jar包流程 默认服务器已经准备好了相关的准备工作&#xff0c;如&#xff1a;docker&#xff0c;docker内安装所需软件数据库&#xff0c;jdk等&#xff0c;将要部署等jar包。 1:将jar 包上传到服务器目录下&#xff1a;/usr/local/service (没有目录可以自己创建…...

【postgresql 物化视图】自动刷新物化视图2种方法

普通视图就是一个虚拟表&#xff0c;不占内存。而物化视图是存在的&#xff0c;占内存。 物化视图&#xff0c;默认是手动刷新。下面是手动刷新的例子。我们来创建一个物化视图。 create MATERIALIZED VIEW dnh_analasis_view as select cjsj,a,b,c,d from table_1; REFRESH …...

HMSC联合物种分布模型

联合物种分布模型&#xff08;Joint Species Distribution Modelling&#xff0c;JSDM&#xff09;在生态学领域&#xff0c;特别是群落生态学中发展最为迅速&#xff0c;Hmsc是物种群落分层模型的缩写(Hierarchical Modelling of Species Communities)&#xff0c;它是一种基于…...

stm32f103zet6 ds18b20

main.c // main.c #include "sys.h" #include "ds18b20.h"int main(void){ uart_init(9600);delay_init();while(DS18B20_Init()) //DS18B20初始化 {printf("error");delay_ms(200);}while(1){printf("%4.2f\r\n",Get_Temp());}}ds18…...

【前端,TypeScript】TypeScript速成(六):函数

函数 函数的定义 定义一个最简单的加法函数&#xff1a; function add(a: number, b: number): number {return a b }&#xff08;可以看到 JavaScript/TypeScript 的语法与 Golang 也非常的相似&#xff09; 调用该函数&#xff1a; console.log(add(2, 3)) // out [LOG…...

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …...

谷歌浏览器的智能推荐功能使用指南

谷歌浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;以其强大的功能和简洁的界面深受用户喜爱。其中&#xff0c;智能推荐功能通过利用先进的算法和数据分析&#xff0c;为用户提供个性化的内容推荐&#xff0c;大大提升了上网体验。本文将详细介绍如何开启和使用谷歌浏览…...

GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目

如果你是一名开发者&#xff0c;经常处理数据或参与项目管理&#xff0c;那么这篇文章绝对值得收藏&#xff01;当你需要一个高效、易用的管理后台&#xff08;Admin Dashboard&#xff09;项目时&#xff0c;本文会给你灵感。 在现代企业管理和业务运营中&#xff0c;管理后台…...

【运维】部署MKDocs

部署MKDocs obsidian 记录笔记&#xff0c;通过 mkdocs 私有化部署。 1 使用MKDocs创建笔记 创建仓库&#xff0c;安装 Material for MkDocs 和 mkdocs-minify-plugin mkdir tmp cd tmp git initpip install mkdocs-material pip install mkdocs-minify-pluginmkdocs new .2 …...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...