Bersihkan cache pernis untuk satu url menggunakan varnishadm

12

Varnish sedang digunakan di situs web Wordpress.

Saya ingin membersihkan Varnish untuk satu URL, bukan seluruh domain.

Dengan perintah ini saya bisa memulai ulang Varnish untuk seluruh domain:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com\" && req.url ~ \"^/\"'

Namun saya ingin membersihkan pernis hanya untuk satu url.

Ex: www.foo.com/url_to_be_purged

Saya sudah mencoba perintah sebelumnya menggantikannya dengan URL tunggal:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com/url_to_be_purged\" && req.url ~ \"^/\"'

Tapi tidak berhasil, URL masih berupa HITVarnish.

Ada ide tentang bagaimana saya bisa mencapai ini?

MEMPERBARUI

Seperti yang disarankan jawaban ghloogh, saya sudah mencoba perintah berikut:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == http://www.foo.com/url_to_be_purged"

Saya juga mencoba variasi ini:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == /url_to_be_purged"

Tapi saya masih mendapatkan HITdi URL dan datanya tidak diperbarui

rfc1484
sumber
1
*** .host == www.foo.com && req.url == / url_to_be_purged "
ghloogh

Jawaban:

20

Anda tidak perlu menentukan skema untuk nama host dan Anda dapat menggunakan pencocokan ketat alih-alih regex:

varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"
ghloogh
sumber
1
Jawaban lainnya memiliki kutipan di tempat yang salah. > varnishadm -T 127.0.0.1:6082 -S / etc / varnish / secret "larangan req.url == / url_to_be_purged"
Jim Holmes
0

Anda dapat mencoba yang berikut ini:

sudo varnishadm -S /etc/varnish/secret  -T 127.0.0.1:6082 "ban req.url ~ \"http://example.com/testimage.png$\""

bekerja untukku.

Abhishek
sumber
2
Ini tidak menambahkan apa pun kecuali sudojawaban yang lain. Ini mungkin lebih baik sebagai komentar.
Esa Jokinen