Nginx FastCGI vekil (proxy) nasıl yapılır? (PHP-FPM için, fastcgi_pass direktifi)

Nginx ve FastCGI ile Tanışma

Nginx, yüksek performanslı bir web sunucusunun yanı sıra ters proxy sunucusu ve yük dengeleyici olarak da kullanılan bir yazılımdır. FastCGI, uygulamaların web sunucuları ile etkileşim kurmasını sağlayan bir protokoldür. PHP-FPM (PHP FastCGI Process Manager), özellikle yüksek yük altındaki PHP uygulamalarının verimli bir şekilde çalışmasını sağlamak için kullanılan bir FastCGI uygulamasıdır. Nginx ile PHP-FPM entegrasyonu, dinamik olarak PHP dosyalarını işlemek amacıyla yaygın olarak tercih edilen bir yapıdır.

Nginx Kurulumu

Nginx, çoğu Linux dağıtımında varsayılan depo kaynaklarından kolaylıkla yüklenebilir. Örneğin, Debian veya Ubuntu tabanlı sistemlerde Nginx’i yüklemek için şu komut kullanılabilir:

“`
sudo apt update
sudo apt install nginx
“`

Yükleme sonrası sunucu hizmeti başlatılarak, Nginx’in çalıştığı doğrulanmalıdır:

“`
sudo systemctl start nginx
sudo systemctl enable nginx
“`

Bunun yanında, Nginx’in durumunu kontrol etmek için:

“`
sudo systemctl status nginx
“`

komutu kullanılabilir.

PHP ve PHP-FPM Kurulumu

PHP, dinamik web içeriği oluşturmak için kullanılan popüler bir programlama dilidir. PHP-FPM, PHP’yi çalıştıran bir FastCGI yöneticisidir ve yüksek performanslı web siteleri için uygundur. PHP’yi ve PHP-FPM’i yüklemek için gerekli komutlar şu şekildedir:

“`
sudo apt install php-fpm
“`

Yapılandırma dosyaları `/etc/php/7.x/fpm/pool.d/www.conf` dizininde bulunan `www.conf` dosyasını düzenleyerek istenen ayarlar gerçekleştirilmelidir.

Nginx ile PHP-FPM Entegrasyonu

Nginx, PHP dosyalarını işlemek için FastCGI protokolünü kullanır. Nginx yapılandırma dosyasında, genellikle `/etc/nginx/sites-available/default` veya belirli bir sanal host dosyasında `fastcgi_pass` direktifi ile PHP-FPM sunucusuna bağlantı sağlanır. Örnek bir Nginx yapılandırması şu şekildedir:

“`
server {
listen 80;
server_name example.com;

root /var/www/html;

index index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
“`

fastcgi_pass Direktifi

`fastcgi_pass` direktifi, Nginx’in hangi FastCGI sunucusuna istek ileteceğini belirtir. PHP-FPM UNIX soketi veya bir IP adresi üzerinden erişim sağlamak için kullanılabilir. UNIX soketi kullanıldığı durumlarda `fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;` ifadesi yer alır. Alternatif olarak, PHP-FPM bir TCP bağlantısı üzerinden çalışıyorsa, `fastcgi_pass 127.0.0.1:9000;` gibi bir ifade kullanılmalıdır.

İstek İşleme

Nginx sunucusuna gelen istek, `location` direktifine göre yönlendirilir. Bu örnekte, `.php` uzantılı dosyalar için belirlenen `location ~ \.php$` bloğu, ilgili PHP dosyasını işlemek üzere PHP-FPM sunucusuna yönlendirilir. `try_files` direktifi, belirtilen dosya veya dizinlerin varlığını kontrol eder; eğer yoksa `=404` ile hata kodu döndürülür.

Güvenlik ve Performans Ayarları

Nginx ve PHP-FPM’in entegrasyonunda güvenlik önlemleri alınması önemlidir. `SCRIPT_FILENAME` parametresi, doğru PHP dosyasının yürütülmesini sağlarken, PHP-FPM sunucusunun yalnızca belirtilen kök dizinle sınırlı kalmasını sağlamaya yönelik güvenlik kontrolleri yapılmalıdır. Ayrıca, kritik dizinlere doğrudan erişim engellenmeli ve gerekli izinler doğru şekilde ayarlanmalıdır.

Nginx ve PHP-FPM’i Yeniden Başlatma

Yapılandırmalar güncellendikten sonra, Nginx ve PHP-FPM servisleri yeniden başlatılmalıdır. Bu işlem, ayarların geçerli olması için gereklidir. Aşağıdaki komutlar kullanılabilir:

“`
sudo systemctl restart nginx
sudo systemctl restart php7.x-fpm
“`

Hata Ayıklama

Yapılandırma ayarlarında sorun yaşandığında, Nginx hata günlükleri incelenerek durum tespiti yapılabilir. Günlükler default olarak `/var/log/nginx/error.log` dosyasında bulunur. PHP-FPM içinse günlükler genellikle `/var/log/php7.x-fpm.log` dosyasındadır. Bu günlüklerin kontrol edilmesi, hataların tespit edilmesini sağlar.

Sonuç

Nginx ile PHP-FPM entegrasyonu, dinamik web içeriğinin yüksek verimlilikle sunulması için etkili bir yöntemdir. `fastcgi_pass` direktifi, Nginx’in PHP-FPM ile nasıl iletişim kuracağını belirlerken, doğru yapılandırma ayarları ve güvenlik önlemleri başarı için kritik öneme sahiptir. Yapılandırma ve yönetim süreçleri tamamlandıktan sonra, yüksek performanslı ve güvenli bir web uygulaması oluşturulması mümkündür.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR