Nginx Gzip Precompression मॉड्यूल काम क्यों नहीं कर रहा है?


11

मैं वर्तमान में अपनी सभी स्टैटिक फ़ाइलों की सेवा के लिए Nginx स्थापित करने का प्रयास कर रहा हूं। चूँकि उन्हें बहुत बार नहीं बदला जाएगा, इसलिए हम चाहते हैं कि मैं gzip_static मॉड्यूल को कुछ सीपीयू समय बचाने और बेहतर संपीड़न की अनुमति देने के लिए मुझे अपनी फ़ाइलों की प्री-गज़िप प्रतियों की अनुमति दें।

मैंने Nginx को संकलित किया --with-http_gzip_static_moduleऔर इसे सेट किया ताकि यह मेरी स्थिर फ़ाइलों की सेवा कर सके, अब तक कोई समस्या नहीं है। मैं परीक्षण करना चाहता था और यह सुनिश्चित करना चाहता था कि वास्तव में स्थिर गज़बिंग काम कर रही है, इसलिए मैंने दो फाइलें बनाईं, test.txtऔर test.txt.gz। फ़ाइलों में से प्रत्येक की पहली पंक्ति कहती है कि क्या उन्हें gzipped किया गया था, और फिर एक नई पंक्ति और 256 यादृच्छिक वर्ण (दो फ़ाइलों को अलग करना) है।

मैंने पढ़ा है कि फ़ाइल का संशोधन समय और यह gzipped समकक्ष है, समान होना चाहिए, और मैंने निम्नलिखित दोनों की कोशिश की है:

touch test.*
touch -r test.txt test.txt.gx

अपनी स्थानीय मशीन पर, मैं कर्ल के साथ परीक्षण कर रहा हूं:

curl $URL/test.txt

यह ठीक काम करता है, मुझे वह संस्करण वापस मिल जाता है जिसे मैंने पूर्व-संपीड़ित नहीं किया था, लेकिन जब मैं ऐसा करता हूं:

curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip

मुझे वह संस्करण भी वापस मिल गया है जिसे मैंने प्रीकॉमप्रेस नहीं किया था। मैं gzip offअपने में स्थापित करने की कोशिश की nginx.conf, लेकिन यह एक फर्क नहीं पड़ता। मैंने भी नग्नेक्स को फिर से संकलित किया है --without-http_gzip_moduleऔर इससे कोई फर्क नहीं पड़ता है, नग्नेक्स अभी भी चीजों को उड़ने के लिए खुद को तैयार करता है।

मैं Nginx के लिए काफी नया हूँ, लेकिन मैं वास्तव में यहाँ एक नुकसान में हूँ।

यहाँ का उत्पादन है ./nginx -V

built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 
configure arguments: --sbin-path=$SOMEPATH/nginx --prefix=$SOMEPATH --user=$ME --group=$MYGROUP --with-http_gzip_static_module --without-http_gzip_module

और यहाँ मेरा है nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
error_log  logs/error.log;
pid        logs/nginx.pid;
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    gzip_static on;
    sendfile        on;
    keepalive_timeout  65;
    access_log  logs/access.log;
    server {
        listen       XXXX;
        server_name  foo.bar.com;
        location / {
            root   html;
        }
        error_page  404 404.html;
        error_page   500 502 503 504 50x.html;
    }
}

कोई भी मदद बहुत सराहनीय है!

जवाबों:


8

आपने अपने प्रश्न में इसका उल्लेख नहीं किया है, लेकिन मेरे पास यह अच्छा अधिकार है कि आप एक साझा होस्ट पर एक और नग्नेक्स के पीछे नंगेक्स को चला रहे हैं। ;)

जिस समय मैं यह लिख रहा हूं, तब Nginx का gzip मॉड्यूल डिफ़ॉल्ट रूप से HTTP 1.1 का उपयोग करता है, लेकिन Nginx केवल HTTP 1.0 का उपयोग बैक-एंड सर्वर के साथ संचार करते समय कर सकता है, इसलिए समाधान gzip_http_versionआपके nginx.confजैसे सेट करना है :

gzip_http_version 1.0;

उस परिवर्तन को करने के बाद अपने Nginx को पुनरारंभ करें, और आपको व्यवसाय में होना चाहिए।


गजब का! यह आपको कैसे पता चला?
जुरगेन पॉल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.