CodeBlanks Logo Icon CodeBlanks

Nginx yapılandırması

PHP kursu · Uzman · Ders 45/54

Nginx'i PHP-FPM ile yapılandırıp ters proxy olarak kullanmayı öğrenirsin.

Nginx ve fastcgi_pass

Nginx, gelen HTTP isteğini PHP-FPM'e fastcgi_pass ile aktarır. fastcgi_pass 127.0.0.1:9000 yerel FPM'e, fastcgi_pass unix:/var/run/php-fpm.sock ise UNIX sokete işaret eder.

location ~ \.php$ bloğu yalnızca .php ile biten yolları FPM'e gönderir. fastcgi_param SCRIPT_FILENAME çalıştırılacak dosyanın tam yolunu bildirir.

include fastcgi_params ortak parametreleri yükler; teker teker yazmaktan kurtarır.

SCRIPT_FILENAME ve root

FPM'e gelen istek SCRIPT_FILENAME parametresi olmadan hangi dosyayı çalıştıracağını bilemez. $document_root$fastcgi_script_name tam yolu oluşturur.

root /var/www/html belge kök dizinidir; index index.php varsayılan dosyayı söyler. try_files $uri =404 dosya yoksa 404 döndürür.

Bu üç yönerge birlikte hem statik dosyaları hem PHP betiklerini doğru yönlendirir; yanlış ayar File not found hatası üretir.

Uygulama Nginx sunucu bloğu üret

PHP ile bir nginx sunucu bloğu metni üret: location ~ \.php$ bloğu içinde fastcgi_pass 127.0.0.1:9000;, fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ve include fastcgi_params; satırları olsun. file_put_contents ile nginx.conf adına yaz ve metni ekrana bas.

Örnek çözümü göster
$nginx değişkenini tek tırnaklı parçalar ve "\n" ile birleştir. $document_root değişken yorumunu önlemek için tek tırnak kullan. Sonra file_put_contents("nginx.conf", $nginx); ve echo $nginx; ekle.
Örnek çözüm:
<?php
// Nginx sunucu bloğunu üret
$nginx = 'location ~ \\.php$ {' . "\n" .
    '    fastcgi_pass 127.0.0.1:9000;' . "\n" .
    '    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' . "\n" .
    '    include fastcgi_params;' . "\n" .
    '}' . "\n";
file_put_contents("nginx.conf", $nginx);
echo $nginx;

Kendini test et

  1. Nginx'te PHP-FPM'e isteği yönlendiren yönerge hangisidir?

    • proxy_pass
    • root
    • fastcgi_pass
    • try_files
    Cevabı göster

    fastcgi_pass — Doğru. fastcgi_pass FastCGI protokolüyle PHP-FPM'e isteği devreder.

  2. fastcgi_pass satırını tamamla

    <?php
    $nginx = "location ~ \\.php$ {\n    ____ 127.0.0.1:9000;\n    include fastcgi_params;\n}";
    print_r(["nginx" => $nginx]);
    
    Cevabı göster
    <?php
    $nginx = "location ~ \\.php$ {\n    fastcgi_pass 127.0.0.1:9000;\n    include fastcgi_params;\n}";
    print_r(["nginx" => $nginx]);
    
  3. Nginx yönergelerini eşleştir

    fastcgi_pass
    PHP-FPM'e yönlendirir
    fastcgi_param
    Parametre gönderir
    root
    Belge kök dizini
    try_files
    Dosya varlığını dener

Uzman bölümündeki tüm dersler