当前位置: 首页 > 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 …...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...