Merhaba arkadaşlar, bugün sizlere Nginx web sunucunuzda Gzip sıkıştırmasını nasıl etkinleştireceğinizi ve yapılandıracağınızı anlatacağım. Bu ayar, özellikle metin tabanlı dosyalarınızı (HTML, CSS, JS) sıkıştırarak hem sunucunuzdan istemciye giden veriyi azaltacak (bant genişliği tasarrufu) hem de sayfalarınızın tarayıcıya daha hızlı ulaşmasını sağlayacak. Benim yönettiğim sunucularda ilk yaptığım optimizasyonlardan biridir, gelin birlikte bakalım.
Gzip Sıkıştırması Nedir ve Neden Önemli?
Gzip, web sunucuları ve tarayıcılar arasında standart haline gelmiş bir dosya sıkıştırma metodudur. Sunucu, içeriği göndermeden önce sıkıştırır, tarayıcı da aldığında açar. Bu işlem, özellikle yazı, stil ve kod dosyalarında %70'e varan boyut küçültmeleri sağlar. Daha az veri aktarımı, daha düşük bant genişliği maliyeti ve en önemlisi, kullanıcılarınız için daha hızlı bir site deneyimi demektir.
Nginx'te Gzip Yapılandırması
Gzip ayarları, genellikle ana Nginx yapılandırma dosyasında (/etc/nginx/nginx.conf) veya bir alt konfigürasyon dosyasında yapılır. Aşağıdaki ayarları, `http { }` bloğunun içine eklemeniz gerekiyor.
Ayarların Detaylı Açıklaması
gzip on; Sıkıştırmayı başlatan anahtar.
gzip_min_length 1024; 1KB'den küçük dosyaları sıkıştırmaz. Sürekli küçük dosyaları sıkıştırmak CPU kullanımını artırır, kazancı azdır.
gzip_types; Bu liste çok önemli! Sadece metin tabanlı dosyaları ekleyin. Zaten sıkıştırılmış olan JPEG, PNG, GIF, PDF, WOFF2 gibi dosyaları eklemeyin, boşuna CPU harcarsınız.
gzip_comp_level 6; 1 en hızlı/az sıkıştırma, 9 en yavaş/en çok sıkıştırma. Seviye 6, çoğu durumda en iyi dengeyi sunar.
gzip_vary on; "Vary: Accept-Encoding" başlığını ekler. Bu, hem sıkıştırılmış hem de sıkıştırılmamış içeriği önbellekleyen proxy'ler için kritiktir.
gzip_disable "msie6"; Gzip ile ilgili bilinen sorunları olan IE6 gibi tarayıcılar için sıkıştırmayı kapatır.
Test Etme ve Yayına Alma
Ayarları yaptıktan sonra, Nginx konfigürasyonunuzun doğruluğunu mutlaka test edin.
Eğer "syntax is ok" ve "test is successful" mesajlarını alırsanız, Nginx'i yeniden başlatabilirsiniz.
Ayarların çalıştığını kontrol etmek için tarayıcınızın Geliştirici Araçları'nı (F12) açın, "Network" sekmesine gidin ve sitenizi yenileyin. CSS veya JS dosyalarından birine tıklayın. "Response Headers" kısmında "Content-Encoding: gzip" yazısını gördüğünüzde, sıkıştırma başarıyla aktiftir.
Sonuç ve Optimizasyon
Gzip, web performans optimizasyonunun temel taşlarından biridir ve neredeyse hiçbir olumsuz yanı yoktur. Bu basit ayar ile sunucu kaynaklarınızdan daha fazla verim alacak ve ziyaretçilerinize daha hızlı bir site sunacaksınız.
Peki siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle `gzip_types` listesine eklediğiniz farklı MIME tipleri var mı? Ya da farklı bir sıkıştırma seviyesi mi tercih ediyorsunuz? Tecrübelerinizi ve sorularınızı aşağıdaki yorumlarda paylaşabilirsiniz, birlikte tartışalım.
Gzip, web sunucuları ve tarayıcılar arasında standart haline gelmiş bir dosya sıkıştırma metodudur. Sunucu, içeriği göndermeden önce sıkıştırır, tarayıcı da aldığında açar. Bu işlem, özellikle yazı, stil ve kod dosyalarında %70'e varan boyut küçültmeleri sağlar. Daha az veri aktarımı, daha düşük bant genişliği maliyeti ve en önemlisi, kullanıcılarınız için daha hızlı bir site deneyimi demektir.
Gzip ayarları, genellikle ana Nginx yapılandırma dosyasında (/etc/nginx/nginx.conf) veya bir alt konfigürasyon dosyasında yapılır. Aşağıdaki ayarları, `http { }` bloğunun içine eklemeniz gerekiyor.
NGINX:
http {
# Gzip sıkıştırmayı aç
gzip on;
# Gzip için minimum dosya boyutu. Daha küçük dosyaları sıkıştırmaya değmez.
gzip_min_length 1024;
# Hangi proxy'ler için gzip kullanılacağı (genel ayar).
gzip_proxied any;
# Hangi MIME tiplerindeki dosyalar sıkıştırılacak?
gzip_types
text/plain
text/css
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
# Sıkıştırma seviyesi (1-9 arası). 6, performans/boyut dengesi için idealdir.
gzip_comp_level 6;
# Vary header'ını ekler, önbellekleme için önemlidir.
gzip_vary on;
# Gzip'i desteklemeyen çok eski tarayıcıları (IE 6 gibi) devre dışı bırak.
gzip_disable "msie6";
}
gzip on; Sıkıştırmayı başlatan anahtar.
gzip_min_length 1024; 1KB'den küçük dosyaları sıkıştırmaz. Sürekli küçük dosyaları sıkıştırmak CPU kullanımını artırır, kazancı azdır.
gzip_types; Bu liste çok önemli! Sadece metin tabanlı dosyaları ekleyin. Zaten sıkıştırılmış olan JPEG, PNG, GIF, PDF, WOFF2 gibi dosyaları eklemeyin, boşuna CPU harcarsınız.
gzip_comp_level 6; 1 en hızlı/az sıkıştırma, 9 en yavaş/en çok sıkıştırma. Seviye 6, çoğu durumda en iyi dengeyi sunar.
gzip_vary on; "Vary: Accept-Encoding" başlığını ekler. Bu, hem sıkıştırılmış hem de sıkıştırılmamış içeriği önbellekleyen proxy'ler için kritiktir.
gzip_disable "msie6"; Gzip ile ilgili bilinen sorunları olan IE6 gibi tarayıcılar için sıkıştırmayı kapatır.
Ayarları yaptıktan sonra, Nginx konfigürasyonunuzun doğruluğunu mutlaka test edin.
Bash:
sudo nginx -t
Eğer "syntax is ok" ve "test is successful" mesajlarını alırsanız, Nginx'i yeniden başlatabilirsiniz.
Bash:
sudo systemctl reload nginx # veya sudo service nginx reload
Ayarların çalıştığını kontrol etmek için tarayıcınızın Geliştirici Araçları'nı (F12) açın, "Network" sekmesine gidin ve sitenizi yenileyin. CSS veya JS dosyalarından birine tıklayın. "Response Headers" kısmında "Content-Encoding: gzip" yazısını gördüğünüzde, sıkıştırma başarıyla aktiftir.
Gzip, web performans optimizasyonunun temel taşlarından biridir ve neredeyse hiçbir olumsuz yanı yoktur. Bu basit ayar ile sunucu kaynaklarınızdan daha fazla verim alacak ve ziyaretçilerinize daha hızlı bir site sunacaksınız.
Peki siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle `gzip_types` listesine eklediğiniz farklı MIME tipleri var mı? Ya da farklı bir sıkıştırma seviyesi mi tercih ediyorsunuz? Tecrübelerinizi ve sorularınızı aşağıdaki yorumlarda paylaşabilirsiniz, birlikte tartışalım.