安装Varnish缓存服务器的步骤如下:
1. 更新apt包管理器
使用以下命令更新apt包管理器:
sudo apt update
2. 安装Varnish
使用以下命令从Ubuntu存储库中安装Varnish:
sudo apt install varnish
3. 配置Varnish服务器
3.1 修改Varnish默认配置
使用以下命令来编辑默认的Varnish服务器配置文件:
sudo nano /etc/default/varnish
修改此文件中的第11行变量VARNISH_LISTEN_ADDRESS和第12行变量VARNISH_LISTEN_PORT,使其分别指向您的服务器的IP地址和Varnish监听端口。
3.2 创建并编辑Varnish配置文件
使用以下命令创建一个名为“default.vcl”的Varnish配置文件:
sudo nano /etc/varnish/default.vcl
在该文件中添加您的缓存服务器配置。以下是一个简单的示例:
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
# Add custom cache rules here
}
sub vcl_backend_response {
# Add custom cache rules here
}
此示例添加一个名为“default”的后端服务器,该服务器监听80端口。您可以根据需要更改服务器名称、主机和端口。
3.3 启动Varnish服务器
使用以下命令启动Varnish服务器:
sudo systemctl start varnish
3.4 测试Varnish缓存
可以使用以下命令测试缓存是否正在工作:
curl -I http://your_server_ip_here
其中“your_server_ip_here”应更改为您的服务器IP地址。
如果Varnish正在正常运行,则您应该能够看到以下响应头:“X-Varnish-Cache: HIT”。
示例1:使用Varnish作为WordPress缓存服务器
以下是如何使用Varnish作为WordPress缓存服务器的示例配置:
# Define the backend server
backend wordpress {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
# Set the backend server to WordPress
if (req.url ~ "^/wp-(login|admin|content)") {
set req.backend_hint = wordpress;
}
# Serve the content from cache if available
if (req.method == "GET" && req.http.host) {
set req.backend_hint = default;
if (req.http.cookie ~ "wordpress_logged_in_") {
set req.http.X-WP-Cache = "logged-in";
} else {
set req.http.X-WP-Cache = "not-logged-in";
}
return (hash);
}
}
sub vcl_backend_response {
if (beresp.http.X-WP-Cache ~ "logged-in") {
return (deliver);
}
if (beresp.http.Cache-Control ~ "private") {
set beresp.http.Cache-Control = "private, no-cache, no-store, must-revalidate";
return (deliver);
}
# Set cache to 5 minutes by default
set beresp.ttl = 5m;
# Allow logged in user to bypass the cache
if (bereq.http.cookie ~ "wordpress_logged_in_") {
set beresp.http.X-WP-Cache = "logged-in";
set beresp.ttl = 0s;
return (deliver);
}
return (deliver);
}
此示例在Varnish配置文件中定义了WordPress作为后端服务器。配置还定义了缓存规则,该规则仅在GET请求中使用,并且将具有“private”缓存控制头的响应视为私有,从而避免缓存这些响应。
示例2:使用Varnish作为Nginx对Ruby on Rails的反向代理缓存
以下是如何使用Varnish作为Nginx对Ruby on Rails的反向代理缓存的示例配置:
backend ruby {
.host = "127.0.0.1";
.port = "3000";
}
sub vcl_recv {
# Set the backend server to Ruby on Rails
set req.backend_hint = ruby;
# Serve the content from cache if available
if (req.method == "GET" && req.http.host) {
set req.backend_hint = default;
return (hash);
}
}
sub vcl_backend_response {
# Set cache to 5 minutes by default
set beresp.ttl = 5m;
# If an error occurs, cache for only one minute
if (beresp.status >= 500) {
set beresp.ttl = 1m;
}
return (deliver);
}
此示例在Varnish配置文件中定义了Ruby on Rails作为后端服务器。配置还定义了缓存规则,此规则允许您缓存所有GET请求,并且将响应缓存5分钟。如果发生错误,则可以将缓存时间缩短为1分钟,以避免缓存错误响应。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下Varnish缓存服务器的安装与配置教程 - Python技术站