web-dev-qa-db-fra.com

Comment envoyer une demande de purge en vernis

Je ne vois pas une question similaire, mais des excuses si je suis duping.

Nous exécutons un cache de vernis sur notre système, mais vous souhaitez installer un système dans lequel nous pouvons purger des pages individuelles lors de leur édition (assez normal). Nous essayons de le faire fonctionner en utilisant un en-tête HTTP. Donc, notre VCL est configuré comme:

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;
        }
}

Cependant, je suis bloqué sur la manière d'envoyer la demande de purge HTTP. Nous utilisons PHP pour le site Web, alors j'ai essayé d'utiliser:

header("PL: PURGE / HTTP/1.0");
header("Host: url to purge");

Mais cela ne semble rien faire (et vernis ne semble pas montrer quoi que ce soit de purge).

J'ai aussi expérimenté Curl mais, encore une fois, cela ne semble pas fonctionner. Est-ce que je manque quelque chose vraiment basique ici, ou est la base du son, ce qui signifie que ma mise en œuvre est bugée?

Merci beaucoup,

21
flukeflume

Vous devez faire une demande HTTP.

Non testé, mais devrait être le long des lignes de (si vous souhaitez utiliser CURL comme vous l'avez mentionné):

$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);
36
Jeremy Roman

Moyen rapide, sale et efficace d'envoyer une demande de purge:

curl -v -k -X PURGE URL

Vous pouvez réellement faire un petit script avec cette déclaration, comme suit:

1) Ouvrez un éditeur, dans l'exemple VI

 vi varnish_purge_url.sh

2) Entrez le texte suivant:

#!/bin/sh

curl -v -k -X PURGE $1

(N'oubliez pas de laisser la ligne vierge entre les premières et dernières lignes).

3) Enregistrez le fichier et quittez. Définissez ensuite les attributs appropriés pour l'exécuter à partir de la coquille:

chmod 750 varnish_purge_url.sh

4) Vous voulez être root lors de la création et de l'utilisation du script ci-dessus. Si vous utilisez Ubuntu, n'hésitez pas à ajouter Sudo devant des commandes si nécessaire.

5) L'utilisation est simple:

./varnish_purge_url.sh URL

URL est l'URL de purger.

3
Dario Fumagalli

Vous pouvez également purger à l'aide de la ligne de commande. Utilisez la commande Sudo varnishadm. Cela ouvrira l'interface de ligne de commande de vernis. Où vous pouvez taper votre commande pour purger les pages selon vos besoins. E.g Pour purger votre page d'accueil, faites ceci:

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  
3
nish