2010-03-17 3 views
48

मैं कैसे जांच सकता हूं कि nginx स्थिर फ़ाइलों के .gz संस्करण की सेवा कर रहा है, यदि वे मौजूद हैं?मैं कैसे जांच सकता हूं कि nginx gzip_static मॉड्यूल काम कर रहा है?

मैं gzip स्थिर मॉड्यूल के साथ nginx संकलित है, लेकिन मैं नहीं दिख रहा है .gz संस्करण का कोई उल्लेख अपने लॉग में कार्य किया जा रहा है। (मैंने global.js और global.css फ़ाइलों को उसी निर्देशिका में उनके .gz संस्करणों के साथ छोटा कर दिया है)।

nginx.conf की प्रासंगिकता का इस तरह दिखता है:

gzip on; 
gzip_static on; 
gzip_http_version 1.0; 
gzip_disable "MSIE [1-6]\."; 
gzip_vary on; 

gzip_comp_level 2; 
gzip_proxied any; 
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

किसी भी संकेत दिए गए सराहना की जाएगी।

उत्तर

81

strace का प्रयोग करें। सबसे पहले, आप nginx प्रक्रिया के पीआईडी ​​का पता लगाने की जरूरत है:

# ps ax | grep nginx 
25043 ?  Ss  0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 
25044 ?  S  0:02 nginx: worker process 

ठीक है, तो 25,044 कार्यकर्ता प्रक्रिया है। अब, हम इसका पता लगाते हैं:

# strace -p 25044 2>&1 | grep gz 
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438 
open("/var/www/css/patches/patch_my_layout.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/yaml/core/iehacks.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/js/koznazna5.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 216 

जैसा कि आप देख सकते हैं, यह फ़ाइलों के .gz संस्करणों को खोजने का प्रयास कर रहा है।

+12

नोट: 'strace' कई बार पीआईडी ​​का समर्थन करता है '-p xyz' तर्क कई बार जोड़कर। उपयोगी जब आपके पास एकाधिक nginx कार्यकर्ता प्रक्रियाएं होती हैं। –

+0

यदि आप सर्वर पर संपत्ति फ़ाइलों को स्पर्श करते हैं, और अपने ब्राउज़र पर एक गुप्त/निजी मोड टैब का उपयोग करते हैं, तो आप फ़ाइलों को फिर से सेवा के लिए मजबूर कर देंगे ताकि ऊपर की तकनीक बिना किसी कैश के बिना गारंटीकृत परिणाम दे सके (उम्मीद है कि)। –

+0

ओएसएक्स –

15

मैं स्वत: संपीड़न को अक्षम हैं और लॉग gzip_ratio:

http { 
    gzip off; 
    gzip_static on; 

    log_format log_with_ratio "... $gzip_ratio ..."; 

    server { 
     access_log /var/log/nginx/file.log log_with_ratio; 
    } 
} 

ध्यान दें, कि आप gzip, gzip_static और access_log सर्वर और स्थान का स्तर प्रति भी पार कर जाते।

+2

यह अगर nginx मक्खी यानी (पर gzip) पर बातें gzipping है वास्तव में परीक्षण के लिए शानदार है लेकिन यदि आप इसे उपयोग करने के लिए देखने की कोशिश gzip_static यह सिर्फ उत्पादन एक हाइफन ... (nginx 1.2.6 का उपयोग कर जाएगा पर है अगर)।हालांकि अगर आपके पास gzip_static चालू है और gzip बंद है और सामग्री-एन्कोडिंग gzip है, तो मुझे लगता है कि आप इसे सही ढंग से काम कर सकते हैं – concept47

19

बदलें गैर Gzipped फ़ाइल की सामग्री। और फिर touch दोनों फाइलें (साथ ही यह है: touch के उसी तत्काल में)। यदि आप किसी ब्राउज़र में फ़ाइल लोड करते हैं (कैश-वाइप) आपको गैर-बदली गई फ़ाइल मिलती है, तो nginx ने स्थैतिक-कैश्ड-gzipped फ़ाइल की सेवा की।

एक आसान तरीका है से बचने के लिए "मैं सिर्फ कैश लाने दिया?" चिंता कर्ल कैश नहीं है के बाद से curl साथ कमांड लाइन से लाने के लिए है।

-3

मैं आमतौर पर क्रोम देव उपकरणों का उपयोग और प्रश्न में फ़ाइलों के लिए फ़ाइल आकार को देखो।

+0

यह कैसे आपको यह जानने में मदद करेगा कि क्या सर्वर फ्लाई पर gzipped है या अगर यह पहले से संपीड़ित फ़ाइल का उपयोग कर रहा था? – RationalDev

+0

ईश्वर बिंदु। शून्य के लिए धन्यवाद :) – Spock

+0

शून्य मुझे नहीं था। – RationalDev

-2

यदि आप सामग्री-एन्कोडिंग कॉलम सक्षम आप नेटवर्क टैब से Chrome डेवलपर उपकरण का उपयोग कर सकते हैं (कॉलम सक्षम करने पर राइट क्लिक करें/तालिका में विशिष्ट सामग्री को निष्क्रिय):

Chrome Dev Tools with Content-Encoding column enabled screenshot

1

वहाँ कुछ संकेत है जो मैंने ETag प्रतिक्रिया शीर्षलेख के बारे में देखा है।

स्थिर फ़ाइल nginx द्वारा कार्य किया जाता है, तो हेडर कुछ इस तरह दिखता है: ETag: "135a-BQhu6KL71dyeCXcVZme6ug", तथापि, जब nginx प्रतिक्रिया (gzip मॉड्यूल के माध्यम से) को संपीड़ित है यह इस तरह दिखता है: ETag: W/"135a-BQhu6KL71dyeCXcVZme6ug" (नोटिस W/)।

आप सादे स्थैतिक फ़ाइलों, पूर्व-संपीड़ित स्थैतिक फ़ाइलों और फ्लाई पर संपीड़ित फ़ाइलों को अलग करने के लिए Content-Encoding: gzip का उपयोग कर सकते हैं।

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