ล้างแคชวานิชสำหรับ URL เดียวโดยใช้วานิช


12

วานิชกำลังถูกใช้ในเว็บไซต์ Wordpress

ฉันต้องการกำจัด Varnish สำหรับ URL เดียวแทนที่จะเป็นทั้งโดเมน

ด้วยคำสั่งนี้ฉันสามารถเริ่ม Varnish ใหม่สำหรับทั้งโดเมน:

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

อย่างไรก็ตามฉันต้องการล้างวานิชสำหรับ URL เดียวเท่านั้น

Ex: www.foo.com/url_to_be_purged

ฉันลองคำสั่งก่อนหน้าแทนที่ด้วย URL เดียว:

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

แต่มันใช้งานไม่ได้ URL ยังอยู่HITในวานิช

ความคิดใด ๆ ของฉันจะบรรลุสิ่งนี้ได้อย่างไร

UPDATE

ตามคำตอบของ ghloogh ที่แนะนำฉันได้ลองคำสั่งต่อไปนี้:

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"

ฉันได้ลองรูปแบบนี้แล้ว:

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

แต่ฉันยังได้รับHITใน URL และข้อมูลไม่ได้รับการปรับปรุง


1
ให้หยุดใช้แบบแผน (http: // หรือ https: // หรือ ftp: // หรืออื่น ๆ ) ในชื่อโฮสต์ :) คำสั่งของคุณควรเป็น: varnishadm -T: 6082 -S / etc / varnish / secret ban "req.http .host == www.foo.com && req.url == / url_to_be_purged "
ghloogh

คำตอบ:


20

คุณไม่จำเป็นต้องระบุรูปแบบสำหรับชื่อโฮสต์และคุณอาจใช้การจับคู่ที่เข้มงวดแทน regex:

varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"

1
คำตอบอื่น ๆ มีคำพูดในที่ผิด > varnishadm -T 127.0.0.1:6082 -S / etc / varnish / secret "ban req.url == / url_to_be_purged"
จิมโฮล์มส์

0

คุณสามารถลองต่อไปนี้:

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

ทำงานให้ฉัน


2
สิ่งนี้ไม่ได้เพิ่มอะไรเลยนอกจากsudoคำตอบอื่น ๆ นี่อาจเป็นความคิดเห็นที่ดีขึ้น
Esa Jokinen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.