Nginx

2014-07-03 9 views
17

पर ईटीएजी को कॉन्फ़िगर कैसे करें मैं एक वेबसर्वर के रूप में Nginx का उपयोग कर रहा हूं और ब्राउज़र कैशिंग विधि को कार्यान्वित करना चाहता हूं ताकि उपयोगकर्ता स्थानीय रूप से स्थिर अपरिवर्तित फ़ाइलों की प्रतियां रख सकें और केवल बदली गई फ़ाइलों को डाउनलोड कर सकें। प्रस्तावों में से एक फ़ाइलों को बदलने के लिए फ़ाइलों का टाइमस्टैम्प का उपयोग करना था और उन्हें केवल ताज़ा करना था, लेकिन मेरे मामले में यह संभव नहीं है क्योंकि प्रत्येक नए तैनाती के बाद पूरे वेब एप्लिकेशन का एक नया संस्करण बनाया गया है और सभी फाइलों के टाइमस्टैम्प परिवर्तन।Nginx

मैंने ईटाग हेडर के बारे में थोड़ा सा शोध किया, और यह एक बहुत अच्छा समाधान के रूप में प्रतीत होता था, लेकिन मुझे पता चला कि Etags आधिकारिक तौर पर Nginx द्वारा समर्थित नहीं हैं।

क्या एनगिक्स या किसी वैकल्पिक समाधान पर एटैग को लागू करने का कोई तरीका है?

+1

यदि आप 'gzip off' का उपयोग करके 'gzip' अक्षम करते हैं, तो आप अपनी प्रतिक्रिया पर 'etag' शीर्षलेख देख सकते हैं। – efkan

+2

ध्यान रखें कि nginx फ़ाइल की आखिरी संशोधन दिनांक और फ़ाइल आकार का उपयोग etag उत्पन्न करने के लिए करता है। –

+0

यदि आपको एटैग लीक करने वाले ईटैग के बारे में सुरक्षा स्कैनर (निको इत्यादि) से कोई शिकायत दिखाई देती है, तो यदि आप nginx चला रहे हैं तो शायद यह एक झूठी सकारात्मक है क्योंकि [nginx में etags में इनोड शामिल नहीं हैं] (http://serverfault.com/questions/690,341/एल्गोरिथ्म-पीछे-nginx-ETag पीढ़ी)। इसे अपाचे में अक्षम किया जा सकता है, हालांकि अपाचे डिफ़ॉल्ट रूप से रिसाव इनोड करता है ('फ़ाइलटाग' निर्देश देखें)। – Synchro

उत्तर

27

अपने Nginx को अपग्रेड करें।

Syntax:  etag on | off; 
Default: etag on; 

Context: http, server, location 

This directive appeared in version 1.3.3. 

Enables or disables automatic generation of the “ETag” response header field for static resources. 

स्रोत: http://nginx.org/en/docs/http/ngx_http_core_module.html#etag

+8

धन्यवाद, मैंने कोशिश की है और एटाग हेडर HTTP शीर्षलेख में जोड़ा गया है, लेकिन फिर भी कैश सत्यापन फाइलों के टाइमस्टैम्प पर निर्भर करता है, भले ही मैंने अंतिम संशोधित शीर्षलेख हटा दिया हो। मैं फ़ाइलों को जांचना चाहता हूं अगर वे वास्तव में सामग्री में बदलाव करते हैं और न केवल फाइलों के टाइमस्टैम्प को सत्यापित करके – HanouaJ

7

Nginx के सभी हाल के संस्करण (2016) के रूप में स्वचालित रूप से इन सेट हो जाएगा।

उदाहरण के लिए:

location /img { 
    root /path/to/public; 
} 

और प्रतिक्रिया हेडर Etag + Last-Modified हेडर लौटा दी जाएगी।