Nginx yapılandırması
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
-
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.
-
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]); -
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