php - Cómo enviar una solicitud de purga en barniz
varnish (4)
Manera rápida, sucia y efectiva de enviar una solicitud de PURGAR:
curl -v -k -X PURGE URL
Realmente puedes hacer un pequeño script con esa declaración, de la siguiente manera:
1) Abre un editor, en el ejemplo VI
vi varnish_purge_url.sh
2) Ingrese el siguiente texto:
#!/bin/sh
curl -v -k -X PURGE $1
(recuerde dejar la línea en blanco entre la primera y la última línea).
3) Guardar el archivo y salir. Luego establece los atributos apropiados para ejecutarlo desde el shell:
chmod 750 varnish_purge_url.sh
4) Desea ser root al crear y usar el script anterior. Si usa Ubuntu, siéntase libre de agregar sudo
delante de los comandos cuando sea necesario.
5) El uso es simple:
./varnish_purge_url.sh URL
Donde URL
es la URL para purgar.
No puedo ver una pregunta similar, pero disculpas si estoy engañando.
Estamos ejecutando un caché de barniz en nuestro sistema, pero queremos instalar un sistema donde podamos purgar páginas individuales cuando se editan (bastante normal). Hemos estado intentando que funcione utilizando un encabezado HTTP. Entonces, nuestro VCL está configurado como:
acl purge {
"localhost";
#### Our server IP #####
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
}
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
}
}
Sin embargo, estoy atascado en cómo ENVIAR realmente la solicitud de purga de http. Estamos usando PHP para el sitio web, así que he intentado usar:
header("PL: PURGE / HTTP/1.0");
header("Host: url to purge");
Pero esto no parece hacer nada (y varnishlog no parece mostrar nada que purga).
También he experimentado con cURL pero, una vez más, no parece estar funcionando. ¿Me estoy perdiendo algo realmente básico aquí, o suena la base, lo que significa que mi implementación está dañada?
Muchas gracias,
Tal vez estoy en una versión más nueva, pero lo que está arriba no me funcionó. Esto hizo
sub vcl_hit {
if (req.request == "PURGE") {
ban("req.url ~ "+req.url);
error 200 "Purged.";
}
}
También puede purgar utilizando la línea de comandos. Utilice el comando sudo varnishadm
. Esto abrirá la interfaz de línea de comandos de Barniz. donde puede escribir su comando para purgar las páginas según su necesidad. Por ejemplo, para purgar tu página de inicio, haz esto:
root@staging:/etc/varnish# sudo varnishadm
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.5.0-28-generic,x86_64,-sfile,-smalloc,-hcritbit
Type ''help'' for command list.
Type ''quit'' to close CLI session.
varnish> ban.url ^/$
200
Tienes que ir y hacer una solicitud HTTP.
No probado, pero debe estar en la línea de (si desea utilizar el rizo como mencionó):
$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);