Mövzunu Açan
#0
Giriş
Veb proqramların sürətli və təhlükəsiz işləməsi üçün server konfiqurasiyası kritik əhəmiyyət kəsb edir. Nginx öz yüngüllüyü və yüksək performansı ilə tanınır, PHP isə adətən PHP-FPM (FastCGI Process Manager) vasitəsilə Nginx ilə əlaqə qurur. Bu mövzuda, PHP proqramları üçün Nginx və PHP-FPM-i necə optimal şəkildə konfiqurasiya edəcəyimizə baxacağıq. Məqsəd təkcə işlək bir sistem qurmaq deyil, həm də təhlükəsizliyi və performansı maksimum dərəcədə artırmaqdır.
Nginx Server Blok Konfiqurasiyası Nümunəsi
Aşağıdakı nümunə, tipik bir PHP proqramı üçün Nginx server blokunu təqdim edir. Bu konfiqurasiya, təhlükəsizlik, performans və düzgün yönləndirmələr nəzərə alınmaqla hazırlanmışdır.
Məntiqi Əsaslandırma və Vacib Qeydlər
Bu konfiqurasiya ilə Nginx serveriniz PHP proqramlarınızı daha sürətli, daha təhlükəsiz və daha effektiv şəkildə idarə edəcək. Unutmayın ki, hər bir layihənin xüsusi tələbləri ola bilər, bu səbəbdən konfiqurasiyanı öz ehtiyaclarınıza uyğunlaşdırmaq vacibdir.
Veb proqramların sürətli və təhlükəsiz işləməsi üçün server konfiqurasiyası kritik əhəmiyyət kəsb edir. Nginx öz yüngüllüyü və yüksək performansı ilə tanınır, PHP isə adətən PHP-FPM (FastCGI Process Manager) vasitəsilə Nginx ilə əlaqə qurur. Bu mövzuda, PHP proqramları üçün Nginx və PHP-FPM-i necə optimal şəkildə konfiqurasiya edəcəyimizə baxacağıq. Məqsəd təkcə işlək bir sistem qurmaq deyil, həm də təhlükəsizliyi və performansı maksimum dərəcədə artırmaqdır.
Nginx Server Blok Konfiqurasiyası Nümunəsi
Aşağıdakı nümunə, tipik bir PHP proqramı üçün Nginx server blokunu təqdim edir. Bu konfiqurasiya, təhlükəsizlik, performans və düzgün yönləndirmələr nəzərə alınmaqla hazırlanmışdır.
CODE
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
server {
listen 80;
listen [::]:80;
server_name sizin-domeniniz.com www.sizin-domeniniz.com;
root /var/www/sizin-domeniniz.com/public; # Layihənizin public qovluğunun yolu
index index.php index.html index.htm;
# Statik faylların keşlənməsi
location ~* \.(jpg|jpeg|gif|png|css|js|ico|woff|woff2|ttf|eot|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
try_files $uri @fallback;
}
# PHP fayllarının PHP-FPM-ə ötürülməsi
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # PHP-FPM soketinizin yolu (PHP versiyasına diqqət edin!)
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_buffers 16 16k; # Performans üçün bu dəyərləri tənzimləyə bilərsiniz
fastcgi_buffer_size 32k;
fastcgi_read_timeout 300; # Uzun sürən skriptlər üçün
}
# .env və digər həssas faylların birbaşa əlçatanlığının qarşısını almaq
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# Laravel, Symfony kimi frameworklər üçün təmiz URL-lər
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Xəta səhifələri
error_page 404 /index.php; # Və ya xüsusi bir 404.php səhifəsi
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# SSL/TLS üçün əlavə konfiqurasiya (Let's Encrypt və s. istifadə edərkən)
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# ssl_certificate /etc/letsencrypt/live/sizin-domeniniz.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/sizin-domeniniz.com/privkey.pem;
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256';
# ssl_prefer_server_ciphers on;
# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
# add_header X-Frame-Options "SAMEORIGIN";
# add_header X-Content-Type-Options "nosniff";
# add_header X-XSS-Protection "1; mode=block";
}
Məntiqi Əsaslandırma və Vacib Qeydlər
- root direktivi: Bu, veb saytınızın fayllarının yerləşdiyi kök qovluğu göstərir. Əksər PHP frameworkləri (Laravel, Symfony) faylları public qovluğunda saxlayır, ona görə də yolu düzgün təyin etmək vacibdir.
- location ~* \.(jpg|jpeg|gif|png|css|js|ico|woff|woff2|ttf|eot|svg)$: Statik fayllar üçün keşləmə qaydaları, brauzerlərin bu faylları daha uzun müddət saxlamasına imkan verir, bu da səhifə yüklənmə sürətini artırır. expires 30d; ilə 30 günlük keşləmə müddəti təyin olunur.
- location ~ \.php$: PHP fayllarını PHP-FPM prosessinə ötürmək üçün istifadə olunur. fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; hissəsində PHP-FPM soketinizin yolunu və PHP versiyasını (PHP 8.2+ tövsiyə olunur) dəqiqləşdirməlisiniz.
- try_files $uri =404; təhlükəsizlik üçün vacibdir. Bu, Nginx-in yalnız mövcud PHP fayllarını PHP-FPM-ə ötürməsini təmin edir.
- fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscript_name; PHP-FPM-ə düzgün skript yolunu ötürür.
- location ~ /\. { deny all; }: Bu blok, .env, .htaccess kimi həssas konfigurasiya fayllarının birbaşa vebdən əlçatan olmasının qarşısını alır. Bu, kritik təhlükəsizlik tədbiridir.
- location / { tryfiles $uri $uri/ /index.php?$querystring; }: Bu, Laravel, Symfony kimi müasir PHP frameworklərində "təmiz URL" (pretty URLs) üçün rewrites qaydasıdır. Əgər istənilən fayl və ya qovluq tapılmazsa, sorğu index.php-ə ötürülür.
- SSL/TLS Konfiqurasiyası: Şərh edilmiş hissə Let's Encrypt kimi xidmətlərdən əldə edilmiş SSL sertifikatları ilə HTTPS-i aktivləşdirmək üçündür. HTTP/2 dəstəyi və güclü şifrələr (ssl_ciphers) istifadəsi müasir veb təhlükəsizliyi üçün vacibdir. Strict-Transport-Security (HSTS) başlığı brauzerlərə domeninizlə həmişə HTTPS üzərindən əlaqə qurmağı tapşırır.
Bu konfiqurasiya ilə Nginx serveriniz PHP proqramlarınızı daha sürətli, daha təhlükəsiz və daha effektiv şəkildə idarə edəcək. Unutmayın ki, hər bir layihənin xüsusi tələbləri ola bilər, bu səbəbdən konfiqurasiyanı öz ehtiyaclarınıza uyğunlaşdırmaq vacibdir.