Nginx’e Gzip Modülünü Ubuntu 16.04 Üzerinde Ekleme ve Yapılandırma
Günümüzün dijital dünyasında web sitelerinin hızı, kullanıcı deneyimi ve arama motoru optimizasyonu (SEO) için kritik bir faktördür. Yavaş yüklenen bir web sitesi, ziyaretçilerin sabırsızlanarak siteyi terk etmesine, dönüşüm oranlarının düşmesine ve arama motoru sıralamalarında gerilemeye neden olabilir. Bu nedenle, web yöneticileri ve geliştiriciler, sitelerinin performansını artırmak için sürekli yeni yollar aramaktadırlar. Bu yollardan biri de içerik sıkıştırmasıdır. Gzip, web trafiğini azaltarak web sitelerinin daha hızlı yüklenmesini sağlayan güçlü ve yaygın olarak kullanılan bir sıkıştırma yöntemidir. Bu makalede, Nginx web sunucusuna gzip modülünü Ubuntu 16.04 işletim sistemi üzerinde nasıl ekleyeceğinizi (veya daha doğrusu yapılandıracağınızı) ve etkinleştireceğinizi adım adım detaylı bir şekilde inceleyeceğiz.
Gzip Sıkıştırmasının Önemi
Gzip, web sunucularının istemcilere (tarayıcılara) göndermeden önce web sayfalarını ve diğer dosyaları sıkıştırmasına olanak tanıyan bir veri sıkıştırma formatıdır. Bir web tarayıcısı bir web sitesini ziyaret ettiğinde, sunucuya bir istek gönderir. Eğer sunucu gzip sıkıştırmasını destekliyorsa ve tarayıcı da bu sıkıştırmayı kabul ediyorsa, sunucu dosyaları sıkıştırılmış biçimde gönderir. Tarayıcı bu sıkıştırılmış dosyayı alır, sıkıştırmayı açar ve içeriği kullanıcıya gösterir. Bu süreç, özellikle metin tabanlı içerikler (HTML, CSS, JavaScript, JSON, XML vb.) için dosya boyutlarında %70’e varan önemli azalmalar sağlayabilir.
Gzip sıkıştırmasının başlıca faydaları şunlardır:
* Daha Hızlı Yükleme Süreleri: Daha küçük dosyalar, ağ üzerinden daha hızlı aktarılır, bu da web sayfalarının kullanıcılar için daha hızlı yüklenmesi anlamına gelir.
* Azaltılmış Bant Genişliği Kullanımı: Sunucu ve istemci arasındaki veri transferi azaldığı için bant genişliği tüketimi düşer. Bu, özellikle yüksek trafikli siteler için barındırma maliyetlerini düşürebilir.
* Geliştirilmiş Kullanıcı Deneyimi: Kimse yavaş bir web sitesini sevmez. Hızlı yüklenen sayfalar, kullanıcıların sitenizde daha uzun süre kalmasına ve daha iyi bir deneyim yaşamasına yardımcı olur.
* SEO İyileştirmesi: Google gibi arama motorları, sayfa hızını sıralama faktörlerinden biri olarak kabul eder. Gzip ile optimize edilmiş bir site, arama motoru sonuçlarında daha iyi bir konum elde edebilir.
Nginx, yüksek performanslı ve verimli bir web sunucusu olarak bilinir ve gzip sıkıştırmasını kolayca yapılandırma yeteneğine sahiptir. Ubuntu 16.04 gibi bir işletim sistemi üzerinde Nginx kullanıyorsanız, gzip’i etkinleştirmek oldukça basit bir işlemdir ve web sitenizin performansında gözle görülür bir fark yaratabilir.
Ön Gereksinimler
Nginx’e gzip modülünü ekleme ve yapılandırma işlemine başlamadan önce bazı ön gereksinimlerin karşılandığından emin olmalısınız:
* Ubuntu 16.04 Sunucusu: Bu rehber, Ubuntu 16.04 LTS (Xenial Xerus) sürümü için yazılmıştır. Benzer Debian tabanlı sistemlerde de benzer adımlar izlenebilir.
* Nginx Kurulumu: Sunucunuzda Nginx’in kurulu olması gerekmektedir. Nginx’in kurulu olup olmadığını nginx -v komutu ile kontrol edebilirsiniz. Eğer kurulu değilse, sudo apt update && sudo apt install nginx komutları ile kurabilirsiniz.
* Sudo Yetkileri: İşlemleri gerçekleştirmek için sudo yetkilerine sahip bir kullanıcı hesabına ihtiyacınız olacaktır.
* Temel Linux Komut Satırı Bilgisi: Terminalde temel komutları kullanabilme becerisi gereklidir.
* İnternet Bağlantısı: Gerekli paketleri indirmek ve güncellemeler yapmak için sunucunuzun internet bağlantısı olmalıdır.
Gzip Sıkıştırmasının Çalışma Mantığı
Gzip, DEFLATE algoritmasını kullanarak dosyaları sıkıştırır. Bu algoritma, bir dosyadaki tekrar eden veri dizilerini bularak bunları daha kısa referanslarla değiştirir. Örneğin, bir HTML dosyasında defalarca tekrar eden
veya
Gzip, özellikle metin tabanlı dosyalar için son derece etkilidir. Resimler (JPEG, PNG), videolar (MP4), PDF’ler gibi zaten sıkıştırılmış formatlar üzerinde gzip uygulamak genellikle çok az ek fayda sağlar veya hiç sağlamaz, hatta bazen dosya boyutunu artırabilir bile. Bu nedenle, Nginx’i yapılandırırken hangi dosya türlerinin sıkıştırılacağını belirtmek önemlidir.
Nginx ve Gzip Modülü
Nginx, gzip sıkıştırması için ngx_http_gzip_module modülünü kullanır. İyi haber şu ki, Nginx’in çoğu standart kurulumunda (özellikle Ubuntu’nun paket yöneticisi aracılığıyla kurulan sürümlerinde) bu modül varsayılan olarak derlenmiş ve etkinleştirilmiştir. Bu, genellikle modülü “eklemeniz” gerekmediği, sadece “yapılandırmanız” gerektiği anlamına gelir.
Ancak, Nginx’i özel bir kaynaktan derlediyseniz veya çok minimal bir kurulum yaptıysanız, bu modül derlenmemiş olabilir. Bu durumda, Nginx’i modülle birlikte yeniden derlemeniz gerekebilir. Bu rehberde, varsayılan olarak modülün mevcut olduğu senaryoya odaklanacağız ve yapılandırma adımlarını detaylandıracağız. Modülün eksik olduğu nadir durumlar için de kısaca bilgi vereceğiz.
Nginx Derlemesinde Gzip Modülünün Varlığını Kontrol Etme
Nginx’in kurulu sürümünde gzip modülünün derlenmiş olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
nginx -V
Bu komut, Nginx’in sürümünü ve derleme sırasında kullanılan yapılandırma seçeneklerini gösterecektir. Çıktıda --with-http_gzip_module ifadesini arayın.
Örnek Çıktı (ilgili kısım):
nginx version: nginx/1.10.3 (Ubuntu)
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)
built with OpenSSL 1.0.2g 1 Mar 2016
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-compat --with-file-aio --with-http_gzip_module
Yukarıdaki örnek çıktıda en sonda --with-http_gzip_module ifadesini görebilirsiniz. Bu, modülün derlenmiş olduğu anlamına gelir ve doğrudan yapılandırma adımlarına geçebilirsiniz.
Eğer bu ifadeyi görmüyorsanız, Nginx’i gzip modülüyle yeniden derlemeniz gerekecektir. Bu işlem, Nginx kaynak kodunu indirmenizi, gerekli bağımlılıkları kurmanızı ve --with-http_gzip_module seçeneğiyle derlemenizi gerektiren daha karmaşık bir süreçtir. Çoğu durumda, özellikle Ubuntu paket deposundan kurulum yapıldıysa, bu senaryo ile karşılaşmazsınız. Eğer bu durumla karşılaşırsanız, en basit çözüm Nginx’i kaldırmak ve modülü içeren standart bir sürümü paket yöneticisi aracılığıyla yeniden kurmaktır.
Nginx’te Gzip’i Adım Adım Yapılandırma
Modülün mevcut olduğunu doğruladıktan sonra, Nginx yapılandırma dosyasını düzenleyerek gzip sıkıştırmasını etkinleştirebilir ve özelleştirebilirsiniz.
1. Nginx Yapılandırma Dosyasını Yedekleme
Herhangi bir yapılandırma değişikliği yapmadan önce, mevcut Nginx yapılandırma dosyanızı yedeklemek her zaman iyi bir uygulamadır. Bu, bir hata durumunda kolayca geri dönebilmenizi sağlar.
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
2. Nginx Yapılandırma Dosyasını Düzenleme
Ana Nginx yapılandırma dosyası genellikle /etc/nginx/nginx.conf konumundadır. Bu dosyayı tercih ettiğiniz bir metin düzenleyici ile açın (örneğin, nano veya vim).
sudo nano /etc/nginx/nginx.conf
Gzip yönergeleri genellikle http {} bloğu içine yerleştirilir. Bu, sıkıştırmanın tüm sanal ana bilgisayarlar ve konumlar için genel olarak geçerli olmasını sağlar. İsterseniz, belirli server {} veya location {} blokları içinde de gzip ayarlarını geçersiz kılabilir veya özel olarak yapılandırabilirsiniz.
3. Gzip Yönergelerini Açıklama ve Ekleme
Aşağıda, /etc/nginx/nginx.conf dosyasındaki http {} bloğuna ekleyebileceğiniz temel gzip yapılandırma yönergeleri ve açıklamaları bulunmaktadır:
http {
# ... diğer http yönergeleri ...
##
# Gzip Sıkıştırma Ayarları
##
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml application/x-font-ttf font/opentype;
# gzip_disable "MSIE [1-6]\.(?!.*SV1)"; # Eski IE sürümleri için devre dışı bırakmak isterseniz
# ... sunucu blokları ...
}
Şimdi bu yönergeleri tek tek inceleyelim:
* gzip on;
* Bu yönerge, gzip sıkıştırmasını etkinleştirir. Bu olmadan diğer gzip yönergelerinin bir etkisi olmaz.
* gzip_vary on;
* Bu, Nginx’in Vary: Accept-Encoding HTTP başlığını yanıt başlıklarına eklemesini sağlar. Bu başlık, proxy sunucularına ve önbelleklere, bir kaynağın sıkıştırılmış ve sıkıştırılmamış farklı sürümlerinin olabileceğini bildirir. Bu, özellikle önbellekleme mekanizmalarının doğru çalışması için önemlidir, aksi takdirde sıkıştırılmış bir içeriği sıkıştırmayı desteklemeyen bir istemciye sunabilirler.
* gzip_proxied any;
* Bu yönerge, Nginx’in proxy olarak çalıştığı durumlarda (örneğin, Nginx’in Apache veya bir uygulama sunucusu önünde olduğu durumlar) sıkıştırmayı etkinleştirir. any değeri, tüm proxy istekleri için sıkıştırmayı etkinleştirir. Diğer olası değerler arasında off, expired, no-cache, no-store, private, no_last_modified, no_etag bulunur ve belirli koşullara göre sıkıştırmayı etkinleştirir. any en kapsayıcı seçenektir.
* gzip_comp_level 6;
* Bu yönerge, gzip sıkıştırma seviyesini ayarlar. Değer 1’den 9’a kadar değişir. 1 en hızlı sıkıştırma (en düşük sıkıştırma oranı) iken, 9 en yavaş sıkıştırma (en yüksek sıkıştırma oranı) anlamına gelir. 6 genellikle sunucu CPU kullanımı ile sıkıştırma oranı arasında iyi bir denge sağlayan önerilen bir değerdir. Daha yüksek seviyeler daha iyi sıkıştırma sağlasa da, sunucu CPU’suna daha fazla yük bindirir.
* gzip_buffers 16 8k;
* Bu yönerge, sıkıştırma için kullanılan tamponların (buffer) sayısını ve boyutunu ayarlar. 16 8k demek, 16 adet 8 kilobaytlık tampon kullanılacağı anlamına gelir. Varsayılan değerler genellikle yeterlidir, ancak yüksek trafikli sunucularda veya çok büyük dosyalarla çalışırken optimize edilebilir.
* gzip_http_version 1.1;
* Bu, sıkıştırmanın etkinleştirileceği minimum HTTP protokol sürümünü ayarlar. HTTP/1.0 ve önceki sürümler için sıkıştırma genellikle önerilmez veya desteklenmez. HTTP/1.1 ve sonrası için bu değer güvenlidir.
* gzip_min_length 256;
* Bu yönerge, sıkıştırılacak minimum yanıt uzunluğunu bayt cinsinden belirler. Çok küçük dosyaları sıkıştırmak, sıkıştırma ve açma işlemi için harcanan CPU süresi nedeniyle aslında performansı düşürebilir. 256 bayt genellikle iyi bir başlangıç noktasıdır, bu sayede küçük dosyaların sıkıştırılmasının getirdiği ek yükten kaçınılır.
* gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml application/x-font-ttf font/opentype;
* Bu, sıkıştırılacak MIME türlerinin bir listesidir. Yalnızca bu listede belirtilen türdeki dosyalar sıkıştırılır. Yukarıdaki liste, çoğu web sitesi için gerekli olan yaygın metin tabanlı türleri içerir. Kendi özel ihtiyaçlarınıza göre bu listeyi genişletebilirsiniz. Örneğin, web yazı tipleri (application/x-font-ttf, font/opentype) veya SVG resimleri (image/svg+xml) gibi ek türleri eklemek faydalı olabilir. Önceden sıkıştırılmış dosya türlerini (JPEG, PNG, MP4 vb.) bu listeye dahil etmeyin.
# gzip_disable "MSIE [1-6]\.(?!.SV1)";
* Bu yönerge, belirli kullanıcı aracılarına (User-Agent) sahip tarayıcılar için gzip sıkıştırmasını devre dışı bırakır. Özellikle eski Internet Explorer sürümlerinin (IE 6 ve altı) gzip ile ilgili bilinen sorunları vardı. Günümüzde bu tarayıcılar neredeyse hiç kullanılmadığı için bu yönerge genellikle yorum satırı olarak bırakılabilir veya tamamen kaldırılabilir. Eğer hedef kitlenizde hala bu eski tarayıcıları kullananlar varsa, yorum satırını kaldırarak etkinleştirebilirsiniz.
Yapılandırma dosyasını kaydettikten sonra (nano için Ctrl+O, Enter, Ctrl+X), bir sonraki adıma geçin.
4. Nginx Yapılandırmasını Test Etme
Yapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol etmek çok önemlidir. Hatalı bir yapılandırma, Nginx’in yeniden başlatılmasını veya yeniden yüklenmesini engelleyebilir.
sudo nginx -t
Eğer her şey yolundaysa, aşağıdaki gibi bir çıktı almalısınız:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Eğer herhangi bir hata mesajı alırsanız, hata mesajındaki satır numarasına dikkat ederek yapılandırma dosyanızı tekrar kontrol edin ve hatayı düzeltin.
5. Nginx’i Yeniden Yükleme
Yapılandırma testi başarılı olduktan sonra, Nginx’i yeniden yükleyerek yeni ayarların etkinleşmesini sağlayın. reload komutu, Nginx’in çalışan süreçlerini kesintiye uğratmadan yapılandırmayı yeniden yüklemesini sağlar, bu da hizmet kesintisi yaşanmayacağı anlamına gelir.
sudo systemctl reload nginx
veya eski init sistemleri için:
sudo service nginx reload
Eğer bir hata olursa ve reload komutu çalışmazsa, restart komutunu deneyebilirsiniz, ancak bu kısa bir hizmet kesintisine neden olacaktır:
sudo systemctl restart nginx
Gzip Sıkıştırmasının Doğrulanması
Gzip sıkıştırmasının başarıyla etkinleştirilip etkinleştirilmediğini kontrol etmenin birkaç yolu vardır.
1. Tarayıcı Geliştirici Araçlarını Kullanma
En yaygın ve görsel yöntem, web tarayıcınızın geliştirici araçlarını kullanmaktır:
1. Web sitenizi ziyaret edin.
2. Tarayıcınızda geliştirici araçlarını açın (genellikle F12 tuşu ile).
3. “Network” (Ağ) sekmesine gidin.
4. Sayfayı yenileyin (Ctrl+R veya F5).
5. Listeden bir HTML, CSS veya JavaScript dosyasına tıklayın.
6. “Headers” (Başlıklar) sekmesine gidin ve “Response Headers” (Yanıt Başlıkları) bölümünü arayın.
7. Content-Encoding: gzip başlığını görmelisiniz. Ayrıca, dosyanın sıkıştırılmadan önceki ve sonraki boyutlarını karşılaştırmak için Content-Length (sıkıştırılmış boyut) ve Size (tarayıcı tarafından bildirilen orijinal veya aktarım boyutu) değerlerine de bakabilirsiniz.
2. curl Komutunu Kullanma
Komut satırından gzip sıkıştırmasını kontrol etmek için curl komutunu kullanabilirsiniz:
curl -H "Accept-Encoding: gzip" -I http://your_domain.com
your_domain.com yerine kendi web sitenizin adresini yazın. -H "Accept-Encoding: gzip" parametresi, sunucuya sıkıştırılmış içeriği kabul ettiğinizi bildirir. -I ise yalnızca yanıt başlıklarını gösterir.
Çıktıda aşağıdaki gibi bir satır arayın:
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Mon, 15 Nov 2023 10:00:00 GMT
Content-Type: text/html
Content-Length: 12345
Last-Modified: Sun, 14 Nov 2023 20:00:00 GMT
Connection: keep-alive
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Encoding: gzip başlığının varlığı, sıkıştırmanın çalıştığını gösterir.
3. Çevrimiçi Gzip Test Araçları
GTmetrix, Google PageSpeed Insights veya çeşitli “Gzip Test” web siteleri gibi çevrimiçi araçları kullanarak da web sitenizin gzip sıkıştırmasını kontrol edebilirsiniz. Bu araçlar genellikle sitenizin genel performansını değerlendirirken gzip durumunu da rapor eder.
Gelişmiş Gzip ve Sıkıştırma Konuları
Gzip’i etkinleştirmek harika bir başlangıçtır, ancak Nginx’in sıkıştırma yeteneklerini daha da optimize etmek için bazı gelişmiş konuları da göz önünde bulundurabilirsiniz.
1. Ön Sıkıştırma (gzip_static modülü)
Yüksek trafikli statik içerikli web siteleri için, dosyaları her istekte anında sıkıştırmak yerine önceden sıkıştırıp .gz uzantılı olarak kaydetmek ve Nginx’in bu önceden sıkıştırılmış dosyaları doğrudan sunmasını sağlamak, sunucu CPU yükünü önemli ölçüde azaltabilir. Bu işlem ngx_http_gzip_static_module modülü ile yapılır.
Bu modül, genellikle standart Nginx kurulumlarında --with-http_gzip_static_module seçeneği ile derlenmiş olarak gelir (yukarıdaki nginx -V çıktısına bakın).
Yapılandırmak için, ilgili server {} veya location {} bloğuna aşağıdaki yönergeyi ekleyebilirsiniz:
location /static/ {
gzip_static on; # Bu dizindeki dosyalar için önceden sıkıştırılmış .gz dosyalarını ara
# ... diğer static dosya ayarları ...
}
Bu, /static/ dizinindeki bir dosya istendiğinde, Nginx’in önce dosyanın .gz uzantılı versiyonunu aramasını sağlar. Eğer bulursa, onu sunar; bulamazsa, sıkıştırılmamış orijinal dosyayı sunar (veya normal gzip ayarları geçerliyse onu anında sıkıştırır). Ön sıkıştırma için, dosyaları dağıtımdan önce gzip -9 file.js gibi bir komutla sıkıştırmanız ve .gz uzantısıyla kaydetmeniz gerekir.
2. Brotli Sıkıştırması
Brotli, Google tarafından geliştirilen ve gzip’ten daha iyi sıkıştırma oranları sunabilen nispeten yeni bir sıkıştırma algoritmasıdır. Özellikle metin tabanlı içerikler için gzip’e göre %15-25 daha küçük dosya boyutları sağlayabilir. Brotli’nin yaygınlaşmasıyla birlikte, modern tarayıcıların çoğu onu desteklemektedir.
Nginx’te Brotli’yi kullanmak için ngx_brotli modülünü Nginx ile derlemeniz gerekir, bu genellikle manuel derleme gerektirir. Eğer performansın zirvesini hedefliyorsanız ve sunucunuzun kaynakları yeterliyse, Brotli’yi düşünmelisiniz. Genellikle, hem gzip hem de Brotli modüllerini etkinleştirip tarayıcının desteklediği en iyi sıkıştırma yöntemini seçmesini sağlamak en iyi yaklaşımdır.
3. Önbellekleme ve Gzip
Vary: Accept-Encoding başlığı, önbellekleme mekanizmaları için hayati öneme sahiptir. CDN’ler (İçerik Dağıtım Ağları) ve diğer proxy sunucular, bu başlığı kullanarak bir kaynağın farklı sıkıştırma seviyelerine sahip birden fazla kopyasının olabileceğini anlar. Bu sayede, sıkıştırmayı destekleyen bir tarayıcıya sıkıştırılmış sürümü, desteklemeyen bir tarayıcıya ise sıkıştırılmamış sürümü doğru bir şekilde sunabilirler. Bu başlığın eksikliği, yanlış önbellekleme davranışlarına ve potansiyel olarak bozuk içerik sunumuna yol açabilir.
4. CPU Kullanımı İzleme
Gzip sıkıştırması, dosyaları sıkıştırmak için sunucunun CPU’sunu kullanır. gzip_comp_level değerini yükseltmek veya çok yüksek trafikli bir sunucuda çok sayıda küçük dosyayı sıkıştırmak, CPU yükünü artırabilir. Gzip’i etkinleştirdikten sonra sunucunuzun CPU kullanımını top, htop veya nmon gibi araçlarla izlemeniz önemlidir. Çoğu modern sunucu ve gzip_comp_level 6 gibi orta seviye bir ayar için bu genellikle bir sorun teşkil etmez. Ancak eğer CPU’nuz darboğaz haline gelirse, gzip_comp_level değerini düşürmeyi veya statik dosyalar için ön sıkıştırmayı kullanmayı düşünebilirsiniz.
Sorun Giderme
Gzip’i etkinleştirdikten sonra beklediğiniz gibi çalışmadığını fark ederseniz, aşağıdaki adımları kontrol edebilirsiniz:
* Nginx Yapılandırma Testi: sudo nginx -t komutunu çalıştırarak yapılandırma dosyanızda sözdizimi hatası olmadığından emin olun.
* Nginx Yeniden Yüklendi mi? Yapılandırma değişikliklerinin etkili olması için Nginx’i yeniden yüklediğinizden (sudo systemctl reload nginx) emin olun.
* Modül Derlendi mi? nginx -V komutu çıktısında --with-http_gzip_module ifadesinin olup olmadığını tekrar kontrol edin. Eğer yoksa, Nginx’i gzip modülüyle yeniden derlemeniz veya modülü içeren bir Nginx sürümünü kurmanız gerekir.
* gzip on; Yönergesi: http {} bloğunda gzip on; yönergesinin gerçekten etkin (yorum satırı değil) olduğundan emin olun.
* gzip_types Listesi: Sıkıştırılmasını beklediğiniz dosya türünün (Content-Type başlığındaki MIME türü) gzip_types listesinde yer aldığından emin olun.
* gzip_min_length: Dosyanın boyutu gzip_min_length değerinden büyük mü? Daha küçük dosyalar sıkıştırılmaz.
* Çakışan Yapılandırmalar: Eğer server {} veya location {} bloklarında gzip ile ilgili çakışan veya geçersiz kılan yönergeler varsa, bunlar genel http {} bloğundaki ayarları etkileyebilir.
* Tarayıcı Önbelleği: Tarayıcınızın önbelleğini temizlemeyi veya gizli pencere (incognito mode) kullanmayı deneyin. Bazen tarayıcı eski, önbelleğe alınmış sıkıştırılmamış sürümü göstermeye devam edebilir.
* Proxy veya CDN: Eğer önünüzde bir CDN veya başka bir proxy sunucu varsa, onların da gzip sıkıştırmasını doğru şekilde işlediğinden emin olun. Vary: Accept-Encoding başlığı burada kritik öneme sahiptir.
Sonuç
Nginx’e gzip sıkıştırmasını Ubuntu 16.04 üzerinde eklemek ve yapılandırmak, web sitenizin performansını artırmak için yapabileceğiniz en etkili ve genellikle en kolay optimizasyonlardan biridir. Bu rehberde belirtilen adımları izleyerek, web sitenizin yükleme sürelerini önemli ölçüde hızlandırabilir, bant genişliği kullanımını azaltabilir ve hem kullanıcılarınız hem de arama motorları için daha iyi bir deneyim sunabilirsiniz.
Nginx’in çoğu standart kurulumunda gzip modülü zaten derlenmiş olarak gelir, bu nedenle genellikle sadece yapılandırma dosyasında birkaç yönergeyi etkinleştirmeniz yeterlidir. Her zaman olduğu gibi, herhangi bir yapılandırma değişikliği yapmadan önce yedek almayı ve değişiklikleri test etmeyi unutmayın. Web performansını sürekli olarak izlemek ve sitenizin ihtiyaçlarına göre ayarları optimize etmek, başarılı bir web varlığı için hayati öneme sahiptir. Gelecekte, Brotli gibi daha yeni sıkıştırma algoritmalarını veya HTTP/2’nin sunduğu performans iyileştirmelerini de keşfetmeyi düşünebilirsiniz.
