在CentOS 8上如何为Apache安装Varnish缓存

时间:2019-04-29 03:17:15  来源:igfitidea点击:

Varnish缓存是一个免费的开源、现代和高性能web应用程序加速器。它是一种快速反向HTTP代理,通过将web内容存储在服务器内存(在缓存中)来缓存内容,从而提高web服务器的性能。它被配置为在Apache (HTTPD) webserver等源服务器前运行。

当客户端请求内容时,Varnish接受HTTP请求,将请求发送到源服务器,缓存返回的对象,并响应客户端请求。下一次客户端请求相同的内容时,Varnish将从缓存中为其提供服务。通过这种方式,它减少了请求的响应时间和网络带宽消耗。 Varnish还可以用作HTTP请求路由器、web应用程序防火墙、负载平衡器等等。

如何在CentOS/RHEL 8上安装Apache Web服务器

安装apache服务器

# dnf update
# dnf install httpd

管理apache服务

### 停止apache web服务
# systemctl stop httpd

### 启动apache web服务
# systemctl start httpd

### 设置apache web服务开机自启动
# systemctl enable httpd

### 查看apache web服务状态
# systemctl status httpd

为apache 配置防火墙

开放80端口

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

如何在CentOS/RHEL 8上安装Varnish缓存6.4

# dnf module install varnish

查看Varnish 的版本

# varnishd -V

Varnish 的配置文件

程序主目录: /usr/sbin/varnishd
配置文件目录: /etc/varnish
配置文件 /etc/varnish/default.vcl: 主varnish配置文件 , 使用VCL语言编写。
配置文件 /etc/varnish/secret:varnish 密钥文件

启动varnish服务,设置开机自启动

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

配置apache服务器,和Varnish 搭配使用

修改文件 /etc/httpd/conf/httpd.conf

将apache 的监听端口改为8080

Listen 8080 

每个需要使用Varnish提供缓存的虚拟主机, 都需要修改相应的监听端口。

例如:

/etc/httpd/conf.d/mytheitroad.tech.conf:

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/mytheitroad.tech/"
    ServerName www.mytheitroad.tech
    # Other directives here
</VirtualHost>

删除默认的欢迎页面:

# rm /etc/httpd/conf.d/welcome.conf

测试配置是否正确,并重启httpd服务,使配置生效

# httpd -t
# systemctl restart httpd

配置Varnish,将其作为httpd的前端

# systemctl edit --full  varnish

将端口6081改成80

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

配置Varnish后端服务器

修改 /etc/varnish/default.vcl

可以将默认的 default改成 server1, 端口设置为 apache服务器监听的端口。
如果apache和Varnish在不同的机器上,需要将 .host设置为 apache所在服务器的IP地址:

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

重启varnish,使配置生效

# systemctl daemon-reload
# systemctl restart varnish

测试

查看监听端口是否正确:

# ss -tpln

使用浏览器打开网址, http://服务器ip, 检查页面是否通过Varnish缓存.