Skip to main content

تنظیمات Nginx در هاست برای جوملا!

Nginx configuration on hosting for Joomla!

نحوه صحیح تنظیمات Nginx در هاست برای جوملا در وب سرور شما که شامل تصحیح پراکسی معکوس، متعادل‌ کننده بار (Load Balancer) و سیستم کش (Cache) می شود!

ویژگی‌ها و کاربردهای Nginx:

  1. وب سرور: سرویس‌دهی به صفحات وب و سایر محتواها در فضای اینترنت.
  2. پراکسی معکوس: مدیریت درخواست‌ها و توزیع بار بین سرورهای مختلف.
  3. متوازن‌کننده بار: توزیع ترافیک ورودی بین چندین سرور برای افزایش کارایی و پایداری.
  4. سیستم کش: ذخیره‌سازی موقت داده‌ها برای بهبود سرعت دسترسی به محتوا.
    Nginx به دلیل کارایی بالا و توانایی مدیریت تعداد زیادی از اتصالات هم‌زمان، به یکی از محبوب‌ترین وب سرورها تبدیل شده است.

برای راهنمایی نصب و اجرا اوبونتو، به این لینک Nginx Install page مراجعه کنید.

نصب PHP FastCGI

برای اوبونتو، PHP FastCGI مثال زیر را اجرا و بخوانید.

# echo "dev-lang/php gd gd2 curl simplexml tokenizer dom tidy sqlite xml fpm cgi" >> /etc/portage/package.use
# emerge php

پیکربندی Nginx

  1. /etc/nginx/sites-available/ در اوبونتو (برای سایت‌هایی که روی آن نمونه Nginx اجرا می‌شوند) 
  2. /etc/nginx/nginx.conf در Gentoo و Raspbian (Debian برای Raspberry Pi بهینه شده است)

در اینجا یک نمونه فایل پیکربندی Nginx به نام joomla.conf وجود دارد که می توانید مجدداً از آن در تمام سایت های فعال Nginx خود استفاده کنید.

server {
  listen 80;
    server_name YOUR_DOMAIN;
    server_name_in_redirect off;

    access_log /var/log/nginx/localhost.access_log;
    error_log /var/log/nginx/localhost.error_log info;

    root PATH_ON_SERVER;
    index index.php index.html index.htm default.html default.htm;

    # Support API
    location /api/ {
	try_files $uri $uri/ /api/index.php?$args;
    }

    # Support Clean (aka Search Engine Friendly) URLs
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # add global x-content-type-options header
    add_header X-Content-Type-Options nosniff;

    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
        return 403;
        error_page 403 /403_error.html;
    }

    location ~ \.php$ {
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include /etc/nginx/fastcgi.conf;
    }

    # caching of files 
    location ~* \.(ico|pdf|flv)$ {
        expires 1y;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
        expires 14d;
    }

}

به چند نکته توجه کنید:

  1. پارامتر fastcgi_pass روی 127.0.0.1:9000 تنظیم شده است که مربوط به پورتی است که FPM برای گوش دادن به آن پیکربندی شده است. این بدان معنی است که می توانید فرآیندهای PHP را روی سرورهای جداگانه اجرا کنید. در جنتو، می توانید این پیکربندی را در فایل /etc/php/fpm-php5.3/php-fpm.conf/ بیابید.
  2. فراموش نکنید که YOUR_DOMAIN و PATH_ON_SERVER بالا را بسته به دامنه خود و مسیر جوملا در سرور خود جایگزین کنید.

پشتیبانی GZip

اگر به پشتیبانی فشرده سازی GZip نیاز دارید، بخش زیر را به بخش http فایل پیکربندی اصلی Nginx اضافه کنید:

gzip on;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";

ماژول ngx_http_gzip_static_module

ماژول ngx_http_gzip_static_module امکان ارسال فایل های از پیش فشرده شده با پسوند نام فایل “.gz” را به جای فایل های معمولی فراهم می کند. این دستورالعمل به Nginx امکان می دهد تا فایل های از پیش gzip شده ای را که جوملا ارائه می دهد مستقیماً پخش کند. این بدان معناست که به قدرت پردازش کمتری نیاز است و فایل ها با نسبت فشرده سازی بسیار بهتری تحویل داده می شوند.

برای استفاده از آن، پارامترهای gzip را در بخش http فایل پیکربندی اصلی Nginx به روز کنید:

gzip on;
gzip_static on;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";