কেন Nginx Gzip Precompression মডিউল কাজ করছে না?


11

আমি বর্তমানে আমার সমস্ত স্ট্যাটিক ফাইল পরিবেশন করার জন্য এনগিনেক্স সেট আপ করার চেষ্টা করছি। যেহেতু সেগুলি খুব ঘন ঘন পরিবর্তন করা যায় না আমি আমার কাছে জিপিপ_স্ট্যাটিক মডিউলটি চাই আমার কিছু সিপিইউ সময় বাঁচাতে এবং আরও ভাল সংকোচনের অনুমতি দেওয়ার জন্য আমার ফাইলগুলির অনুলিপি-কপি করার অনুমতি দিতে want

আমি এনগিনেক্সকে সংকলিত করে --with-http_gzip_static_moduleসেট আপ করেছি যাতে এটি আমার স্ট্যাটিক ফাইলগুলি পরিবেশন করছে, এখন পর্যন্ত কোনও সমস্যা নেই। আমি পরীক্ষা করে নিশ্চিত করতে চেয়েছিলাম যে স্ট্যাটিক গিজিপিং আসলে কাজ করছে, তাই আমি দুটি ফাইল তৈরি করেছিলাম test.txtএবং test.txt.gz। প্রতিটি ফাইলের প্রথম লাইনে বলা হয় সেগুলি জিজেপ করা হয়েছিল কিনা, এবং তারপরে একটি নতুন লাইন এবং 256 এলোমেলো অক্ষর রয়েছে (দুটি ফাইলের ভিন্ন ভিন্ন)।

আমি পড়েছি যে ফাইলটির পরিবর্তনের সময়টি এবং এটির গিজিপ করা অংশটি একই হওয়া উচিত এবং আমি নিম্নলিখিত দুটিটিই চেষ্টা করেছি:

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

আমার স্থানীয় মেশিনে, আমি কার্ল দিয়ে পরীক্ষা করছি:

curl $URL/test.txt

এটি ঠিকঠাক কাজ করে, আমি যে সংস্করণটি প্রি-সংকোচিত করিনি তা ফিরে পেয়েছি, তবে যখন আমি এটি করি:

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

আমি এছাড়াও ফিরে সংস্করণ আমি precompress না পেতে। আমি gzip offআমার মধ্যে সেট করার চেষ্টা করেছি nginx.conf, কিন্তু এটি কোনও পার্থক্য করে না। আমি এনগিনেক্সের সাথে আবারও সংকলিত করেছি --without-http_gzip_moduleএবং এটি কোনও তাত্পর্যপূর্ণ বলে মনে হয় না, এনগিনেক্স এখনও ফ্লাইতে জিনিসগুলি জিৎপস করে।

আমি এনগিনেক্সে বেশ নতুন, তবে আমি এখানে সত্যিই ক্ষতিতে আছি।

এখানে আউটপুট ./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

আপনি আপনার প্রশ্নে এটি উল্লেখ করেননি, তবে আমার কাছে এটি ভাল কর্তৃত্বের বিষয় যে আপনি কোনও ভাগী হোস্টে অন্য এনগিনেক্সের পিছনে প্রিন্সিড চালাচ্ছেন gin ;)

আমি এটি লেখার সময়, এনগিনেক্সের জিজিপ মডিউলগুলি ডিফল্টরূপে HTTP 1.1 ব্যবহার করে, তবে ব্যাক-এন্ড সার্ভারের সাথে যোগাযোগ করার সময় Nginx কেবলমাত্র HTTP 1.0 ব্যবহার করতে পারে, সুতরাং সমাধানটি gzip_http_versionআপনার মধ্যে সেট করা যেমন nginx.conf:

gzip_http_version 1.0;

এই পরিবর্তনটি করার পরে আপনার এনগিনেক্স পুনরায় চালু করুন এবং আপনার ব্যবসায়ের উচিত।


অ্যামেজিং! আপনি কিভাবে এটি জানতেন?
জর্জেন পল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.