2014-04-21 4 views
5

मुझे एक दिलचस्प समस्या मिली है।एनजीआईएनएक्स सेवा स्रोत के बिना प्रीकंप्रेस्ड इंडेक्स फ़ाइल

मैं एनजीआईएनएक्स के gzip_static मॉड्यूल का उपयोग कर स्रोतों के बिना कुछ gzipped फ़ाइलों को सेवा करने की कोशिश कर रहा हूं (मुझे इसके लिए डाउनसाइड्स पता है)। इसका मतलब है कि आप सर्वर पर gzipped फाइलें रख सकते हैं जिन्हें ट्रांसफर-एन्कोडिंग के साथ परोसा जाएगा: gzip। उदाहरण के लिए, यदि कोई फ़ाइल/foo.html.gz है, तो /foo.html के लिए एक अनुरोध संपीड़ित फ़ाइल को सामग्री-एन्कोडिंग के साथ परोसा जाएगा: टेक्स्ट/एचटीएमएल।

हालांकि यह आमतौर पर काम करता है यह पता चला है कि निर्देशिका में इंडेक्स फ़ाइलों की तलाश करते समय gzipped संस्करणों पर विचार नहीं किया जाता है।

GET /index.html 
200 

GET/
403 

मैं सोच रहा था कि अगर कोई इसे ठीक करने के बारे में जानता है। मैंने इंडेक्स फ़ाइल में index.html.gz सेट करने का प्रयास किया लेकिन इसे एक gzip फ़ाइल के रूप में परोसा जाता है, फिर एक gzip एन्कोडेड HTML फ़ाइल।

+0

क्या आप संपीड़ित प्रतिक्रिया या पूर्व-संपीड़ित स्थिर फाइलें भेजना चाहते हैं? वे अलग हैं - http://nginx.org/en/docs/http/ngx_http_gzip_module.html; http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html –

+0

मैं संकुचित स्थिर फ़ाइलों को प्रस्तुत करने की कोशिश कर रहा हूं। –

+0

"हमेशा" मान (1.3.6) के साथ, gzipped फ़ाइल का उपयोग सभी मामलों में किया जाता है, बिना क्लाइंट का समर्थन करता है। यह तब उपयोगी होता है जब डिस्क पर कोई असम्पीडित फ़ाइलें न हों या ngx_http_gunzip_module का उपयोग किया जाए। तो आप लिखते हैं: "gzip हमेशा", "gzip on" – Spock

उत्तर

4

यह स्पष्ट रूप से इस तरह से काम नहीं करेगा।

if (r->uri.data[r->uri.len - 1] == '/') { 
    return NGX_DECLINED; 
} 

तो अगर uri स्लेश में समाप्त होता है, तो यह और भी Gzipped संस्करण के लिए नहीं लगता है:

इस मॉड्यूल source का एक हिस्सा है।

लेकिन, शायद आप फिर से लिखने के माध्यम से हैक कर सकते हैं। (यह एक अनुमान है, मैं यह परीक्षण नहीं किया है)

rewrite ^(.*)/$ $1/index.html; 

संपादित करें: यह autoindex (अनुमान) के साथ काम करने के लिए आप का उपयोग कर फिर से लिखने के इस बजाय कोशिश कर सकते हैं: यह शायद है

location ~ /$ { 
    try_files ${uri}/index.html $uri; 
} 

पुनर्लेखन का उपयोग करने से बेहतर समग्र। लेकिन आपको कोशिश करने की जरूरत है ...

+0

धन्यवाद, यह काम करता है! दुर्भाग्य से, यह 'autoindex' तोड़ता है। क्या आपको लगता है कि इसे 'ऑटोइंडेक्स' के साथ काम करने का कोई तरीका है? – ReyCharles

+0

@ReyCharles शायद यह एक बेहतर है। लेकिन मैंने – Fox

+0

का परीक्षण नहीं किया है दुर्भाग्य से समाधान में एक ही समस्या है। – ReyCharles

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