Merhaba arkadaşlar, bugün sizlere web sitenizin performansını gözle görülür şekilde artıracak, özellikle görseller ve statik dosyalar konusunda harikalar yaratan bir yöntemden bahsedeceğim: Nginx için PageSpeed Modülü. Benim sunucularda genelde kullandığını bir yöntemdir ve özellikle WordPress veya benzeri dinamik sitelerde inanılmaz fayda sağlar. Bu modül, sitenize gelen her isteği yakalayıp, içeriği optimize ederek kullanıcıya gönderir. Yani siz hiçbir şey yapmazsınız, o otomatik olarak görselleri yeniden boyutlandırır, sıkıştırır, CSS/JS'leri birleştirir ve tembel yükleme (lazyload) ekler. Hadi başlayalım!
PageSpeed Modülü Nedir ve Ne Sağlar?
PageSpeed, aslında Google'ın geliştirdiği açık kaynaklı bir performans optimizasyon kütüphanesidir. Nginx'e entegre edildiğinde, sunucu seviyesinde aşağıdaki işlemleri otomatik yapar:
Görselleri WebP formatına çevirip (tarayıcı destekliyorsa) boyutu ciddi oranda düşürür.
Görsellere otomatik lazyload (tembel yükleme) özelliği ekler.
CSS ve JavaScript dosyalarını birleştirir, minify eder (küçültür) ve gereksiz boşlukları temizler.
HTML çıktısını küçültür.
Öncelikli kaynakları (Critical CSS gibi) işaretleyerek yükleme sırasını optimize eder.
Faydasını en çok, optimizasyon yapma imkanınız olmayan veya çok fazla eklentiye sahip sitelerde görürsünüz.
Derleme ve Kurulum Süreci
En stabil yöntem, mevcut Nginx'inizi PageSpeed modüllü olarak yeniden derlemektir. Bu biraz teknik bir işlem gibi görünebilir ama adımları takip ederseniz sorunsuz tamamlarsınız. Öncelikle sunucunuza bağlanın ve aşağıdaki adımları root yetkisiyle uygulayın.
İlk olarak gerekli kütüphaneleri kuralım ve PageSpeed kaynak kodlarını indirelim:
Şimdi mevcut Nginx sürümünüzü ve yapılandırma argümanlarını öğrenmemiz gerekiyor:
Bu komut bize uzun bir çıktı verecek. `--prefix=...` ile başlayan tüm argümanları kopyalayıp bir kenara not edin. Şimdi aynı Nginx sürümünün kaynak kodunu indirip, PageSpeed modülünü ekleyerek derleyeceğiz. Örnek olarak 1.18.0 sürümünü kullanalım:
Şimdi, az önce öğrendiğiniz yapılandırma argümanlarının sonuna PageSpeed modülünü ekleyerek `configure` komutunu çalıştırın. Aşağıdaki örnekteki gibi olacak:
`[MEVCUT_TUM_ARGUMLARINIZ]` kısmına, `nginx -V` komutundan aldığınız tüm argümanları (--prefix, --with-http_ssl_module gibi) olduğu gibi yapıştıracaksınız. Bu işlem başarılı olursa, derlemeye geçebiliriz:
`make` işlemi bittikten sonra, mevcut Nginx binary dosyasının yedeğini alıp yenisini kopyalayalım:
Son olarak Nginx servisini yeniden başlatalım ve modülün yüklendiğini kontrol edelim:
Eğer çıktıda `--add-module=/usr/src/incubator-pagespeed-ngx-1.15.0` satırını görürseniz, tebrikler! Kurulum başarılı.
Temel PageSpeed Konfigürasyonu
Kurulum tamam, şimdi sıra bu gücü yönlendirmekte. PageSpeed'i aktif edip temel filtrelerimizi yapılandıralım. Ana Nginx yapılandırma dosyanız olan /etc/nginx/nginx.conf içindeki `http {` bloğuna aşağıdaki temel ayarları ekleyin.
Bu ayarlardan sonra, optimizasyonu uygulamak istediğiniz her bir `server {` (virtual host) bloğunun içine şu satırı eklemelisiniz:
Tüm bu değişiklikleri yaptıktan sonra, Nginx konfigürasyonunuzu test edip servisi yeniden başlatın:
Dikkat Edilmesi Gerekenler ve Sorun Giderme
Her güçlü araç gibi, PageSpeed de dikkatli kullanılmalı. İşte benim tecrübelerimden çıkardığım önemli noktalar:
Hepsi Bir Anda Değil: Tüm filtreleri aynı anda açmayın. Önce `rewrite_images,lazyload_images` gibi temel birkaç filtreyle başlayıp, sitenizin düzgün çalıştığından emin olun. Sonra diğerlerini ekleyin.
Önbellek (Cache) Sorunları: Eğer sitenizde bir içerik güncellemesi yaptıysanız ve eski görseller/scriptler hala görünüyorsa, PageSpeed önbelleğini temizlemeniz gerekebilir: `sudo rm -rf /var/ngx_pagespeed_cache/`
CPU Kullanımı: Yoğun trafiği olan bir sitede tüm filtreler aktifken ilk yüklemede CPU kullanımı artabilir. Bu nedenle önbellek yolunu RAM disk gibi hızlı bir depolama alanına yönlendirmenizi öneririm.
Hata Ayıklama: Bir sorun olduğunda, ilk bakacağınız yer Nginx error log'larıdır: `sudo tail -f /var/log/nginx/error.log`. Ayrıca `pagespeed on;` satırını `pagespeed unplugged;` yaparak modülü devre dışı bırakıp sorunun kaynağını doğrulayabilirsiniz.
PageSpeed, aslında Google'ın geliştirdiği açık kaynaklı bir performans optimizasyon kütüphanesidir. Nginx'e entegre edildiğinde, sunucu seviyesinde aşağıdaki işlemleri otomatik yapar:
Görselleri WebP formatına çevirip (tarayıcı destekliyorsa) boyutu ciddi oranda düşürür.
Görsellere otomatik lazyload (tembel yükleme) özelliği ekler.
CSS ve JavaScript dosyalarını birleştirir, minify eder (küçültür) ve gereksiz boşlukları temizler.
HTML çıktısını küçültür.
Öncelikli kaynakları (Critical CSS gibi) işaretleyerek yükleme sırasını optimize eder.
Faydasını en çok, optimizasyon yapma imkanınız olmayan veya çok fazla eklentiye sahip sitelerde görürsünüz.
En stabil yöntem, mevcut Nginx'inizi PageSpeed modüllü olarak yeniden derlemektir. Bu biraz teknik bir işlem gibi görünebilir ama adımları takip ederseniz sorunsuz tamamlarsınız. Öncelikle sunucunuza bağlanın ve aşağıdaki adımları root yetkisiyle uygulayın.
İlk olarak gerekli kütüphaneleri kuralım ve PageSpeed kaynak kodlarını indirelim:
Bash:
sudo apt-get update
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev -y
cd /usr/src
sudo wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.15.0.zip
sudo unzip v1.15.0.zip
cd incubator-pagespeed-ngx-1.15.0/
sudo wget https://dl.google.com/dl/page-speed/psol/1.15.0.tar.gz
sudo tar -xzvf 1.15.0.tar.gz
Şimdi mevcut Nginx sürümünüzü ve yapılandırma argümanlarını öğrenmemiz gerekiyor:
Bash:
nginx -V 2>&1 | grep arguments
Bu komut bize uzun bir çıktı verecek. `--prefix=...` ile başlayan tüm argümanları kopyalayıp bir kenara not edin. Şimdi aynı Nginx sürümünün kaynak kodunu indirip, PageSpeed modülünü ekleyerek derleyeceğiz. Örnek olarak 1.18.0 sürümünü kullanalım:
Bash:
cd /usr/src
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
sudo tar -xvzf nginx-1.18.0.tar.gz
cd nginx-1.18.0
Şimdi, az önce öğrendiğiniz yapılandırma argümanlarının sonuna PageSpeed modülünü ekleyerek `configure` komutunu çalıştırın. Aşağıdaki örnekteki gibi olacak:
Bash:
sudo ./configure [MEVCUT_TUM_ARGUMLARINIZ] --add-module=/usr/src/incubator-pagespeed-ngx-1.15.0
`[MEVCUT_TUM_ARGUMLARINIZ]` kısmına, `nginx -V` komutundan aldığınız tüm argümanları (--prefix, --with-http_ssl_module gibi) olduğu gibi yapıştıracaksınız. Bu işlem başarılı olursa, derlemeye geçebiliriz:
Bash:
sudo make
`make` işlemi bittikten sonra, mevcut Nginx binary dosyasının yedeğini alıp yenisini kopyalayalım:
Bash:
sudo mv /usr/sbin/nginx /usr/sbin/nginx.old
sudo cp objs/nginx /usr/sbin/
Son olarak Nginx servisini yeniden başlatalım ve modülün yüklendiğini kontrol edelim:
Bash:
sudo systemctl restart nginx
nginx -V 2>&1 | grep pagespeed
Eğer çıktıda `--add-module=/usr/src/incubator-pagespeed-ngx-1.15.0` satırını görürseniz, tebrikler! Kurulum başarılı.
Kurulum tamam, şimdi sıra bu gücü yönlendirmekte. PageSpeed'i aktif edip temel filtrelerimizi yapılandıralım. Ana Nginx yapılandırma dosyanız olan /etc/nginx/nginx.conf içindeki `http {` bloğuna aşağıdaki temel ayarları ekleyin.
NGINX:
# Pagespeed Modülünü Etkinleştir
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Etkinleştirmek istediğiniz filtreler
pagespeed EnableFilters rewrite_images,convert_jpeg_to_webp,convert_to_webp_lossless,lazyload_images;
pagespeed EnableFilters combine_css,combine_javascript,rewrite_css,rewrite_javascript;
pagespeed EnableFilters collapse_whitespace,remove_comments;
# Önemli: Admin panelini ve istatistikleri sadece localhost'tan aç (Güvenlik!)
pagespeed Statistics on;
pagespeed StatisticsLogging on;
pagespeed LogDir /var/log/pagespeed;
pagespeed AdminPath /pagespeed_admin;
location /pagespeed_admin {
allow 127.0.0.1;
deny all;
}
Bu ayarlardan sonra, optimizasyonu uygulamak istediğiniz her bir `server {` (virtual host) bloğunun içine şu satırı eklemelisiniz:
NGINX:
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
Tüm bu değişiklikleri yaptıktan sonra, Nginx konfigürasyonunuzu test edip servisi yeniden başlatın:
Bash:
sudo nginx -t
sudo systemctl reload nginx
Her güçlü araç gibi, PageSpeed de dikkatli kullanılmalı. İşte benim tecrübelerimden çıkardığım önemli noktalar:
Hepsi Bir Anda Değil: Tüm filtreleri aynı anda açmayın. Önce `rewrite_images,lazyload_images` gibi temel birkaç filtreyle başlayıp, sitenizin düzgün çalıştığından emin olun. Sonra diğerlerini ekleyin.
Önbellek (Cache) Sorunları: Eğer sitenizde bir içerik güncellemesi yaptıysanız ve eski görseller/scriptler hala görünüyorsa, PageSpeed önbelleğini temizlemeniz gerekebilir: `sudo rm -rf /var/ngx_pagespeed_cache/`
CPU Kullanımı: Yoğun trafiği olan bir sitede tüm filtreler aktifken ilk yüklemede CPU kullanımı artabilir. Bu nedenle önbellek yolunu RAM disk gibi hızlı bir depolama alanına yönlendirmenizi öneririm.
Hata Ayıklama: Bir sorun olduğunda, ilk bakacağınız yer Nginx error log'larıdır: `sudo tail -f /var/log/nginx/error.log`. Ayrıca `pagespeed on;` satırını `pagespeed unplugged;` yaparak modülü devre dışı bırakıp sorunun kaynağını doğrulayabilirsiniz.