我想在我的 symfony 应用程序中使用 varnish 进行缓存控制,
我使用过虚拟主机,这是我的虚拟主机文件。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName varnish-local.com
ServerAlias www.varnish-local.com
DocumentRoot /var/www/html/varnish-software/public
DirectoryIndex index.php
<Directory /var/www/html/varnish-software/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/symfony_error.log
CustomLog ${APACHE_LOG_DIR}/symfony_access.log combined </VirtualHost>
vcl 4.1;
backend default {
.host = "127.0.0.1";
.port = "8000";
}
sub vcl_recv {
if (req.method == "PURGE") {
return (purge);
}
}
sub vcl_backend_response {
if (beresp.status == 404 || beresp.status == 500) {
set beresp.ttl = 0s;
}
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
当我从 symfony:serve 命令运行我的应用程序时,我看到我的清漆服务器正在运行 http://127.0.0.1:6081/ 但是我如何将它与我的 8000 端口一起使用,以及如何使用与我的虚拟主机一起使用。
当我运行 varnish-local.com 时,我想从 varnish 服务器获取数据,因此我想在 varnish-local.com 中使用 varnish,而不是使用 127.0.0.1:6081。
请问有人可以提供有关此问题的信息吗,谢谢。
Varnish 的内置监听端口确实是
6081
。这样做是为了避免与现有服务器发生端口冲突。
-a
运行时参数可用于将其设置为80
或8000
等值。这是一个示例 varnishd
命令,其中包括常见的运行时参数:
varnishd \
-a :8000 \
-a localhost:8443,PROXY \
-p feature=+http2 \
-f /etc/varnish/default.vcl \
-s malloc,256m
此命令可能是您的 systemd 配置的一部分。您可以选择直接在本地机器上运行此命令进行测试。
您使用的 VCL 代码非常简单。我建议您使用我们在 Varnish Software 创建的示例 VCL 文件:https://www.varnish-software.com/developers/tutorials/example-vcl-template/
虽然它不是以框架为中心,但它确实开箱即用。我自己将它用于我构建的 Symfony 网站。
如果您在 Symfony 应用程序中使用特定的 cookie,则可能需要一些特定于站点的调整。
Varnish 支持开箱即用的虚拟主机,并将创建一个哈希值,根据 URL 和
Host
标头来标识缓存对象。
HTTP 使用这个
Host
标头在单个服务器上强制执行多个域。这基本上就是虚拟主机的作用。