2012-02-09 14 views
17

मुझे एक समान प्रश्न नहीं दिखाई दे रहा है, लेकिन अगर मैं नकल कर रहा हूं तो क्षमा मांगें।वार्निश में एक शुद्ध अनुरोध कैसे भेजें

हम अपने सिस्टम पर एक वार्निश कैश चला रहे हैं, लेकिन एक सिस्टम स्थापित करना चाहते हैं जहां हम संपादित किए जाने पर अलग-अलग पृष्ठों को शुद्ध कर सकते हैं (काफी सामान्य)। हम इसे एक HTTP शीर्षलेख का उपयोग करके काम करने की कोशिश कर रहे हैं। तो, हमारे वीसीएल की तरह स्थापित है:

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

हालांकि, मैं वास्तव में http purge अनुरोध भेजने के तरीके पर अटक गया हूं। हम वेबसाइट के लिए PHP का उपयोग कर रहे हैं, इसलिए मैं का उपयोग कर की कोशिश की है:

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

लेकिन यह कुछ भी नहीं लगता है (और varnishlog कुछ भी शुद्धिकरण को दिखाने के लिए प्रतीत नहीं होता है)।

मैंने कर्ल के साथ भी प्रयोग किया है लेकिन, फिर से, यह काम नहीं कर रहा प्रतीत होता है। क्या मैं यहां वास्तव में कुछ मूलभूत याद कर रहा हूं, या आधार ध्वनि है, जिसका अर्थ है कि मेरा कार्यान्वयन खराब हो गया है?

बहुत धन्यवाद,

उत्तर

30

आपको जाने और HTTP अनुरोध करने की आवश्यकता है।

untested है, लेकिन की तर्ज पर किया जाना चाहिए (आप के रूप में आप का उल्लेख कर्ल उपयोग करना चाहते हैं):

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

यूप, पुर्ज एक HTTP अनुरोध है जैसे कि जीईटी या पोस्ट - हालांकि यह आरएफसी 2616 को पोस्ट करता है, लेकिन इसका उपयोग सामग्री कैश और प्रॉक्सी, वार्निश और अपाचे ट्रैफिक सर्वर जैसे प्रॉक्सी द्वारा किया जाता है। "पूर्ण curl_setopt" का एक त्वरित Google [इस उदाहरण] को फेंक दिया [http://www.rwahyudi.com/linux/purge-squid-cache-using-curl-without-squidclient/)। आनंद लें :) – TerryE

+1

आप दोनों के लिए बहुत धन्यवाद! बहुत आभारी! :) – flukeflume

+1

या अधिक विज्ञापन-स्क्रिप्ट या स्क्रिप्ट-संचालित दृष्टिकोणों के लिए, आप 'curl -XPURGE "http: //your.varnish.cache/url-to-purge" ' –

3

तुम भी कमांड लाइन का उपयोग कर सफाई कर सकते हैं। sudo varnishadm कमांड का उपयोग करें। यह वार्निश कमांड लाइन इंटरफेस खुल जाएगा। जहां आप अपनी आवश्यकता के अनुसार पृष्ठों को शुद्ध करने के लिए अपने आदेश में टाइप कर सकते हैं। उदा अपने मुख पृष्ठ पर शुद्ध करने के लिए, ऐसा करते हैं:

[email protected]:/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 
+1

नहीं" का उपयोग भी कर सकते हैं, आप वर्निशडम से शुद्ध नहीं हो सकते - केवल आपके उदाहरण के रूप में प्रतिबंध। अंतिम परिणाम समान होता है भले ही प्रतिबंध और शुद्ध समान कार्यक्षमता नहीं है। – Clarence

-1

शायद मैं एक नए संस्करण पर हूँ लेकिन क्या इसके बाद के संस्करण है मेरे लिए काम नहीं किया। यह आपने क्या किया: एक शुद्ध अनुरोध भेजने के लिए

sub vcl_hit { 
    if (req.request == "PURGE") { 
    ban("req.url ~ "+req.url); 
    error 200 "Purged."; 
    } 
} 
2

, त्वरित गंदा और प्रभावी तरीका:

curl -v -k -X PURGE URL 

आप वास्तव में है कि बयान के साथ एक छोटे से स्क्रिप्ट बना सकते हैं, इस प्रकार है:

1) ओपन एक संपादक, उदाहरण के छठी

vi varnish_purge_url.sh 

2) में निम्न पाठ दर्ज करें:

+०१२३५१६४१०
#!/bin/sh 

curl -v -k -X PURGE $1 

(पहली और अंतिम पंक्तियों के बीच खाली रेखा को छोड़ना याद रखें)।

3) फ़ाइल को सहेजें और बाहर निकलें। फिर खोल से निष्पादित करने के लिए उचित स्थापित गुण:

chmod 750 varnish_purge_url.sh 

4) आप बनाने और इसके बाद के संस्करण स्क्रिप्ट का उपयोग कर जब जड़ होना चाहता हूँ। यदि उबंटू का उपयोग करते हैं, तो आवश्यक होने पर आदेशों के सामने sudo जोड़ने के लिए स्वतंत्र महसूस करें।

5) प्रयोग सरल है:

./varnish_purge_url.sh URL 

कहाँ URL यूआरएल शुद्ध करने के लिए है।

+0

कोई मदद यहाँ? :) http://stackoverflow.com/questions/35632607/is-the-http-verb-purge-idempotent –

संबंधित मुद्दे