FastCGI چیست؟
FastCGI یک پروتکل برای ارتباط سرور وب و اپلیکیشنهای تحت وب است. با استفاده از FastCGI، میتوانیم درخواستها را به اپلیکیشنهای مقیاسپذیر منتقل کنیم تا کارایی و سرعت بارگذاری افزایش پیدا کند. به زبان ساده، FastCGI باعث میشود که سرور بتواند بهصورت همزمان به تعداد زیادی درخواست پاسخ دهد، بدون اینکه هر بار لازم باشد اپلیکیشن را دوباره بارگذاری کند.
مدول ngx_http_fastcgi_module
مدول ngx_http_fastcgi_module
در Nginx به ما این امکان را میدهد که درخواستهای FastCGI را مدیریت کنیم. این مدول به Nginx اجازه میدهد تا به اپلیکیشنهای FastCGI متصل شود و به طور مؤثر آنها را مدیریت کند. به ویژه، زمانی که با زبانهایی مانند PHP کار میکنیم، این مدول نقش بسیار مهمی دارد.
فیلد fastcgi_index
فیلد fastcgi_index
مشخص میکند که در صورتیکه کاربر درخواست یک دایرکتوری را ارسال کند، کدام فایل بهعنوان فایل پیشفرض برای پردازش درخواست FastCGI برگشت داده شود. بهطور معمول، وقتی که سرور Nginx یک دایرکتوری دریافت میکند، ممکن است بخواهد به یک فایل خاص، مثلاً index.php
یا index.py
برود.
تنظیم fastcgi_index در Nginx
برای اینکه بتوانیم از fastcgi_index
استفاده کنیم، به یک فایل پیکربندی نیاز داریم. در زیر نمونهای از تنظیمات Nginx که fastcgi_index
را تنظیم میکند، آورده شده است.
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.php index.html;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
توضیح کد
server {
این دستور بیان میکند که تنظیمات سرور در این بلاک قرار دارد.
listen 80;
سرور بر روی پورت 80 گوش میدهد، یعنی درخواستهای HTTP را پردازش میکند.
server_name example.com;
نام دامنهای که سرور به آن پاسخ میدهد را مشخص میکند.
location / {
تنظیمات مربوط به مسیر اصلی سایت را شامل میشود.
root /var/www/html;
فولدر ریشه سایت را مشخص میکند.
index index.php index.html;
فایلهای پیشفرضی که در صورت درخواست دایرکتوری بازگردانده میشوند را مشخص میکند.
try_files $uri $uri/ =404;
محاولت میکند تا ابتدا فایل و سپس دایرکتوری را پیدا کند و در صورت عدم موفقیت خطای 404 را برمیگرداند.
location ~ \.php$ {
تنظیمات مربوط به فایلهای PHP را فراخوانی میکند.
include fastcgi_params;
پارامترهای FastCGI را شامل میشود.
fastcgi_pass 127.0.0.1:9000;
درخواستهای FastCGI را به اپلیکیشن در آدرس مذکور ارسال میکند.
fastcgi_index index.php;
فایل پیشفرض برای پردازش درخواستهای دایرکتوری را تعیین میکند.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
مسیر فایل اسکریپت را برای FastCGI مشخص میکند.
}
بلاک تنظیمات مربوط به PHP را میبندد.
}
بلاک تنظیمات سرور را میبندد.