Nginx Web Sunucusunu Kurmak

Nginx Web Sunucusu

NGinX[1] (“engine x” enciniks olarak söylenir) web sunucusu, yüksek eş zamanlı çalışma kabiliyeti, yüksek performans ve düşük hafıza kullanımına odaklanılarak tasarlanmış bir web sunucusudur. Tüm işletim sistemlerine kurulabilen açık kaynak kodlu özgür bir yazılımdır. Dünyada Apache’den sonra en çok kullanılan web sunucusu yazılımı Nginx’dir. Bu özellikleri ile Raspberry Pi gibi donanım kaynakları sınırlı olan platformlarda, özellikle bellek kullanımı açısından ilk tercih edilen web sunucu yazılımı olmaktadır. Bunun anlamı, ihtiyaç duyulan uygulamaya göre; Nginx’in göreceli olarak daha düşük sistem kaynağı tüketmek üzere yapılandırılabilmesine imkân sağlamasıdır.

Nginx ve Apache başarım karşılaştırması

Apache’nin ilk tercih edilme nedeni, oldukça uzun bir geçmişi ve buna bağlı olarak geniş bir kitle ve desteğe sahip olmasıdır. Bu açıdan Apache standartları belirleyen bir web sunucusudur. Fakat kaynak tüketiminin istenilen seviyelerde olmamasından ötürü farklı alternatifleri türemiştir. Nginix de bu alternatifler arasında iyi bir seçenektir. Nginx’i kurmak için aşağıdaki komutları sırasıyla çalıştırın:

Kurulum tamamlandıktan sonra, Nginx  /var/www/html varsayılan yayın dizininden hemen yayın yapmaya başlar. Tarayıcınızın adres satırına Raspberry Pi’ınızın IP adresini yazarak bu yayını görüntüleyebilirsiniz.

Nginx Web Sunucu Test Sayfası

Şimdi dilerseniz, varsayılan sayfanın yerine kendi karşılama sayfamızı hazırlayalım. Bunun için /var/www/html dizini içinde aşağıdaki gibi bir HTML sayfası oluşturalım ve daha sonra tarayıcımızın sayfasını tazeleyelim:

Nginx Karşılama Sayfamız

/var/www/html dizininde index.html dosyamızı oluşturduktan sonra Nginx’in varsayılan site yapılandırma dosyası olan /etc/nginx/sites-available/default içeriğine gözatalım. Aşağıdaki yapılandırma dosyasındaki açıklamalara dikkat edin.

Nginx Web Sunucusuna PHP Kurmak

Nginx, PHP’yi bir CGI[2](Common Gateway Interface) uygulaması olarak ele alır. CGI kullanımında bir PHP betiği ayrı bir işlem olarak çalıştırılır. Önceki bölümde Apache’nin bir modülü olarak kurulumunu yaptığımız PHP, CGI’a göre daha fazla bellek kullanımına sahipti. Nginx’e CGI olarak kuracağımız PHP, PHP-FPM (FastCGI Process Manager) olarak adlandırılmaktadır. Kurmak için aşağıdaki komutu çalıştırın:

Yükleme tamamlandıktan sonra Nginx’in PHP yapılandırmasını gerçekleştirmek üzere varsayılan yapılandırma dosyasını nano ile açarak aşağıdaki ayarları ekleyelim:

Dikkat ederseniz yukarıdaki yapılandırmada error_page seçeneği yer almaktadır. Bir ziyaretçi web sunucusunda bulunmayan bir dosya talep ettiğinde, Nginx’in özelleştirilmiş bir hata (sayfa bulunamadı) sayfası görüntülemesini sağlayabilirsiniz. Yukarıdaki error_page seçeneği bu iş için kullanılmaktadır. Sonraki satırdaki location değeri ise 404.htm’nindoğrudan çağrılamamasını (internal yani dâhili bir dosya olarak kalmasını) sağlamaktadır. Tabi ki ana yayın dizininizde 404.htm adlı bir dosyanın bulunduğundan da emin olmalısınız

Yukarıdaki yapılandırmada php7.3-fpm.sock adlı soket dosyasının yer aldığı dizin, kurulan PHP’nin sürümüne göre farklılık gösterebilir. Bu dosyanın konumunu ilgili dizinden teyit ederek güncellemeniz gerekir. PHP’nin 7.3 sürümü itibari ile bu dosya /var/run/php/php7.3-fpm.sock konumunda yer alıyordu.

Tüm bu ayarların geçerli olması için Nginx’i yeniden başlatın:

PHP yapılandırmasını sınamak için yayın dizininde aşağıdaki gibi bir PHP betiği oluşturarak tarayıcınız ile ziyaret edebilirsiniz. Ziyaret etmek için tarayıcınızın adres satırına http://raspberry-ip-adresi/phpinfo.php yazabilirsiniz. Bu betik size (PHP’nin phpinfo() fonksiyonu) mevcut PHP yapılandırmanız hakkında oldukça detaylı bir liste görüntüleyecektir.

Sık Kullanılan Nginx Yapılandırma Seçenekleri

/etc/nginx/nginx.conf dosyası Nginx web sunucusunun ana yapılandırma dosyasıdır. Çoğu zaman gerek olmasa da ihtiyaç duyabileceğiniz bazı Nginx yapılandırma seçenekleri ve görevleri şunlardır:

worker_process seçeneği

/etc/nginx/nginx.conf dosyasında worker_process değeri HTTP istekleri işlenirken kaç farklı Nginx hizmetçisinin aynı anda çalıştırılacağını tanımlar. Her bir Nginx hizmetçisi web sunucusuna gelen sayfa isteklerini işleyen tarayıcıya çıktının gönderilmesini sağlayan işlemlerdir. Bu işlemlerin Nginx’in alt bileşenleri olarak sürekli çalışarak sayfa isteklerini karşılarlar. Web sunucu (Nginx) içindeki bağımsız web sunucular olarak düşünebilirsiniz. Bu ayarın en ideal değeri her bir hizmet prosesine bir işlemci çekirdeği tahsis etmekle gerçekleşir. Mevcut Raspberry Pi’nizin kaç çekirdeği olduğunu görmek için cpuinfo dosyasına göz atabilirsiniz:

worker_process değerine ihtiyacınıza göre çekirdek ataması yapabilirsiniz. Örneğin bir Raspberry Pi 3 sisteminin her bir çekirdeğine bir Nginx prosesi atamak için aşağıdaki tanımlamayı yapabilirsiniz.

Tabii ki, worker_process değerini çok daha yüksek bir değere de ayarlayabilirsiniz. Bu değeri mevcut boş RAM miktarınıza ve Raspberry Pi’ın işlemcisinin yoğunluğuna göre belirleyebilirsiniz. Çekirdek sayısının üzerinde verilecek değerlerde Raspberry Pi multi-threading (çok kanallılık) yaparak Nginx proseslerinin her bir işlemci çekirdeği üzerine zaman paylaşımlı olarak yayılmasını sağlar.

worker_connections seçeneği

/etc/nginx/nginx.conf yapılandırma dosyasının events bloğunda kullanılan worker_connections değeri ise bir Nginx prosesinin aynı anda kaç HTTP isteği ile ilgileneceğini tanımlar. Raspberry Pi’niz üzerindeki mevcut yük durumuna ve HTTP ile sunduğunuz içeriğin ihtiyaç duyduğu işlemci gücüne göre worker_connections değerini ayarlayabilirsiniz. Genel olarak her bir worker’ için 1000 değeri çoğu durumda uygun görülmüştür.

Çok yoğun işlem gücüne ihtiyaç duyan bir web içeriği/uygulaması barındırıyorsanız bu değeri azaltabilir worker_process değerini artırabilirsiniz. worker_process ve worker_connections ‘in optimal değerlerini htop programının çıktısı ve yük testleri yaparak belirleyebilirsiniz.

server_tokens seçeneği

/etc/nginx/nginx.conf yapılandırma dosyasının http bloğunda yer alan bu ayar Nginx’in istemciye gönderdiği Nginx’in versiyon bilgisini gizlemek için kullanılır. Bu değeri gizlemenin amacı güvenlik içindir. Web sunucunuzu ziyaret eden herhangi bir kişi kullanmış olduğunuz Nginx sunucunuzun sürüm bilgisini öğrenemez; yalnızca ileri teknikler kullanılarak tespit edilebilir (örn: nmap tarayıcısı). Bu değer varsayılan olarak aktif durumdadır (on) ve bir istemci (örn.:web tarayıcısı) aşağıdaki başlık cevabında yer aldığı gibi Nginx sürümünü kolayca görebilir. Bu değeri görmek için örneğin Chrome tarayıcısında sayfa üzerine sağ tıklatarak incele (inspect) seçeneğini seçin ve daha sonra Network sekmesini açarak istek yapılan sayfayı seçin, ardından da Header’s sekmesinde ilgili başlık bilgisini inceleyin.

Değer “off” durumuna getirildikten sonra Nginx yeniden başlatılırsa (sudo service nginx restart) istemciye gönderilen başlık bilgisi aşağıdaki gibi görünecektir:


[1] Nginx Web Sunucu Yazılımı – https://tr.wikipedia.org/wiki/Nginx

[2] CGI – https://goo.gl/HqPg4a

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.