Apache CDN entegrasyonu, web sitenizin hızını ve performansını önemli ölçüde artırabilir. CDN’ler, statik içeriği coğrafi olarak dağılmış sunucular üzerinden kullanıcıya en yakın noktadan sağlar. Bu sayede, yükleme süreleri kısalır ve Apache sunucusunun üzerindeki yük azalır. Bu makalede, Apache sunucusu ile CDN entegrasyonunu adım adım ve kod uygulamaları ile detaylandıracağız.
Apache ve CDN Nedir?
Apachenedir? dünyanın en popüler web sunucusudur ve çoğu web sitesinin alt yapısında kullanılır. Yüksek esneklik, geniş eklenti desteği ve güvenilirliği ile öne çıkar. Ancak yoğun trafik altında tek başına yeterli olmayabilir. Bu noktada bir CDN devreye girer.
CDN Nedir?
Content Delivery Network (CDN), web sitenizin statik içeriklerini (resimler, videolar, CSS, JavaScript) dünya genelindeki sunucularda önbelleğe alarak kullanıcılara en yakın lokasyondan sunan bir teknolojidir. Böylece içerikler daha hızlı yüklenir ve sunucu yükü hafifletilir.
Apache ve CDN Entegrasyonu İçin Gereksinimler
- Apache Web Sunucusu
- DNS Yönetim Erişimi
- Bir CDN Sağlayıcısı (Örneğin: Cloudflare, Amazon CloudFront, Akamai)
- SSH erişimi (Sunucunuza root erişim için)
CDN Sağlayıcısı Seçimi ve Kurulumu
- Cloudflare, Amazon CloudFront veya Başka Bir CDN Sağlayıcısı Seçin: Bu rehberde Cloudflare ile entegrasyonu ele alacağız. Ancak, CloudFront veya diğer CDN’ler de benzer adımlar izlenerek kurulabilir.
- Cloudflare Hesabı Oluşturun ve Alan Adınızı Ekleyin:
- Cloudflare web sitesine gidin ve ücretsiz bir hesap oluşturun.
- Alan adınızı ekleyin ve Cloudflare’ın DNS sunucularına yönlendirilmesi için gerekli adımları takip edin. Cloudflare, size alan adınızın mevcut DNS kayıtlarını gösterecektir. DNS kayıtlarını doğru bir şekilde ekledikten sonra devam edin.
- Cloudflare, size yeni nameserver bilgileri verecektir. Bu nameserver’ları domain sağlayıcınıza giderek mevcut nameserver’larınızı Cloudflare’ın verdikleri ile değiştirin.
Apache ile CDN Entegrasyonu İçin Kod Uygulamaları
1. Apache Yapılandırması
Apache sunucunuzun CDN ile düzgün çalışabilmesi için bazı yapılandırma değişiklikleri yapmanız gerekebilir. Özellikle gerçek IP adreslerinin doğru şekilde loglanmasını sağlamak ve optimize edilmiş bir performans almak için bazı modülleri etkinleştirmeniz gerekir.
Gerçek IP Adreslerini Alma (mod_remoteip)
Bir CDN üzerinden gelen trafik, proxy sunucularından geleceği için ziyaretçilerin gerçek IP adreslerini almak için mod_remoteip
kullanmanız gerekiyor.
1: mod_remoteip Modülünü Etkinleştirin: Apache’nin mod_remoteip
modülü, CDN tarafından sağlanan IP adreslerinin doğru bir şekilde loglanmasını sağlar.
sudo a2enmod remoteip
2: remoteip.conf Dosyasını Yapılandırın: /etc/apache2/conf-available/remoteip.conf
dosyasını oluşturun veya düzenleyin ve aşağıdaki içeriği ekleyin:
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/12
RemoteIPTrustedProxy 172.64.0.0/13
3: Apache’yi Yeniden Başlatın: Bu ayarlardan sonra Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Bu yapılandırma, Cloudflare proxy sunucuları üzerinden gelen isteklerin gerçek kullanıcı IP adreslerini loglamanızı sağlar.
2. Cloudflare CDN ile Apache Cache Kontrolü
CDN ile Apache entegrasyonunda, önbellekleme ayarları kritik öneme sahiptir. Apache’nin statik içerikleri doğrudan Cloudflare’a yönlendirmesi ve gereksiz dinamik içeriklerin CDN üzerinden geçmemesi için bazı cache ayarlarını yapılandırmalısınız.
Cache-Control Header’larını Yapılandırın: Apache’nin statik dosyalar için doğru önbellekleme başlıklarını gönderdiğinden emin olmalısınız.
1: Apache Yapılandırmasına Giriş: Apache sunucu yapılandırma dosyanızı açın (/etc/apache2/sites-available/000-default.conf
):
sudo nano /etc/apache2/sites-available/000-default.conf
2: Statik İçerikler İçin Cache Kontrolü Ekleyin: Aşağıdaki kodu <VirtualHost>
bloğuna ekleyin:
<IfModule mod_headers.c>
# CSS ve JavaScript dosyaları için 1 hafta önbellekleme
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# Resimler için 1 ay önbellekleme
<FilesMatch "\.(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# HTML için anlık yenileme
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "no-store, no-cache, must-revalidate"
</FilesMatch>
</IfModule>
3: Apache’yi Yeniden Başlatın: Ayarları yaptıktan sonra Apache’yi yeniden başlatın:
sudo systemctl restart apache2
3. SSL Sertifikası ve Cloudflare SSL Modları
Cloudflare ve Apache entegrasyonunda SSL ayarlarının doğru yapılması önemlidir. Apache’de SSL sertifikası kurulu değilse, Cloudflare’ın Flexible SSL seçeneği kullanılabilir. Ancak güvenlik açısından Full SSL veya Full SSL (Strict) tercih edilmelidir.
1: Apache’de SSL Sertifikasını Kurun: Apache’ye SSL sertifikası kurulu değilse, aşağıdaki komutları kullanarak Let’s Encrypt SSL sertifikasını kullanarak Apache SSL Sertifikası kurulumu işlemlerini tamamlayabilirsiniz.
sudo apt update
sudo apt install certbot python3-certbot-apache
Ardından SSL sertifikasını kurun:
sudo certbot --apache
2: Cloudflare’de Full SSL Modunu Etkinleştirin: Cloudflare hesabınıza giriş yapın, SSL/TLS ayarlarına gidin ve Full SSL veya Full SSL (Strict) modunu etkinleştirin.
4. Apache’de CDN İsteklerini Loglama
Cloudflare veya başka bir CDN ile çalışırken gelen isteklerin doğru şekilde loglandığından emin olmak için Apache log formatını düzenlemeniz gerekir.
1: Log Formatını Ayarlayın: Apache’nin log formatını değiştirmek için /etc/apache2/apache2.conf
dosyasını düzenleyin ve aşağıdaki satırı ekleyin:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" cloudflare
CustomLog ${APACHE_LOG_DIR}/access.log cloudflare
2: Apache’yi Yeniden Başlatın: Log formatı değişikliklerinden sonra Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Bu sayede CDN üzerinden gelen istekler, doğru IP adresleri ile loglanacaktır.
Test ve Optimizasyon
Apache ve CDN entegrasyonunu tamamladıktan sonra aşağıdaki adımları uygulayarak sistemi test edebilirsiniz:
- Web Performans Testi: Google PageSpeed, GTmetrix veya Pingdom gibi araçlarla web sitenizin hızını test edin.
- IP Kontrolü: Apache loglarınızı inceleyerek ziyaretçilerin gerçek IP adreslerinin doğru şekilde kayıt altına alındığından emin olun.
- SSL Kontrolü: SSL yapılandırmalarınızı tarayıcılar üzerinden test ederek hatasız çalıştığını doğrulayın.
Apache web sunucusunun CDN ile entegrasyonu, web sitenizin performansını önemli ölçüde artırır. Bu adımları takip ederek CDN’inizi etkin bir şekilde kullanabilir, web sitenizi hızlandırabilir ve Apache sunucunuzun üzerindeki yükü hafifletebilirsiniz. Entegre edilen CDN sayesinde, yüksek trafikle başa çıkmak daha kolay hale gelir ve kullanıcılarınıza daha iyi bir deneyim sunabilirsiniz.