Wskazówki dotyczące konfiguracji Nginx + FastCGI

UWAGA! Podczas pracy w chmurze ta konfiguracja jest ustawiana i nie są wymagane żadne dalsze działania. W razie jakichkolwiek problemów prosimy o kontakt z naszym działem pomocy technicznej.


Aby framework działał w środowisku Nginx + FastCGI bez użycia Apache, w pliku konfiguracyjnym Nginx należy uwzględnić kilka specjalnych ustawień.

Poniżej przedstawiono przykładową konfigurację dla następujących warunków:

  • Katalog na serwerze, w którym jest zainstalowany framework, to /var/www/fw/.
  • PHP FastCGI obsługuje port TCP 9000 (jest to ustawienie domyślne).
server {
    listen
80;

    server_name fw
;
 
    root
/var/www/fw;
    index index
.php;

    try_files $uri $uri
/ /index.php?$query_string;

    location
/index.php {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
   
}
   
   
# for install only
    location
/install.php {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
   
}    
   
    location
/api.php {
        fastcgi_split_path_info  
^(.+\.php)(.*)$;
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
   
}
   
    location
~ /(oauth.php|link.php|payments.php) {
        try_files $uri $uri/
/index.php?$query_string;
   
}    

    location
^~ /wa-data/protected/ {
       
internal;
   
}
   
    location
~ /wa-content {
        allow all;
    }

    location ^~ /
(wa-apps|wa-plugins|wa-system|wa-widgets)/.*/(lib|locale|templates)/ {
        deny all
;
   
}

    location
~* ^/wa-(cache|config|installer|log|system)/ {
       
return 403;
   
}

    location
~* ^/wa-data/public/contacts/photos/[0-9]+/ {
         root
/var/www/fw/;
         access_log off
;
         expires  
30d;
         error_page  
404  =  @contacts_thumb;
   
}

    location
@contacts_thumb {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
        fastcgi_param  SCRIPT_NAME  
/wa-data/public/contacts/photos/thumb.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root
/wa-data/public/contacts/photos/thumb.php;
   
}
 
   
# photos app
    location
~* ^/wa-data/public/photos/[0-9]+/ {
        access_log   off
;
        expires      
30d;
        error_page  
404  =  @photos_thumb;
   
}

    location
@photos_thumb {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
        fastcgi_param  SCRIPT_NAME  
/wa-data/public/photos/thumb.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root
/wa-data/public/photos/thumb.php;
   
}
   
# end photos app
   
   
# shop app
    location
~* ^/wa-data/public/shop/products/[0-9]+/ {
        access_log   off
;
        expires      
30d;
        error_page  
404  =  @shop_thumb;
   
}
    location
@shop_thumb {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
        fastcgi_param  SCRIPT_NAME  
/wa-data/public/shop/products/thumb.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root
/wa-data/public/shop/products/thumb.php;
   
}
   
    location
~* ^/wa-data/public/shop/promos/[0-9]+ {
        access_log   off
;
        expires      
30d;
        error_page  
404  =  @shop_promo;
   
}
    location
@shop_promo {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
        fastcgi_param  SCRIPT_NAME  
/wa-data/public/shop/promos/thumb.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root
/wa-data/public/shop/promos/thumb.php;
   
}
   
# end shop app
   
   
# mailer app
    location
~* ^/wa-data/public/mailer/files/[0-9]+/ {
        access_log   off
;
        error_page  
404  =  @mailer_file;
   
}
    location
@mailer_file {
        include
/etc/nginx/fastcgi_params;
        fastcgi_pass  
127.0.0.1:9000;
        fastcgi_param  SCRIPT_NAME  
/wa-data/public/mailer/files/file.php;
        fastcgi_param  SCRIPT_FILENAME $document_root
/wa-data/public/mailer/files/file.php;
   
}
   
# end mailer app

    location
~* ^.+\.(jpg|jpeg|gif|png|webp|js|css)$ {
        access_log   off
;
        expires      
30d;
   
}
}


Sprawdź także, czy plik konfiguracyjny /etc/nginx/fastcgi_params zawiera te wartości:

fastcgi_param SCRIPT_FILENAME     $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO           $fastcgi_path_info
;



Błąd w tekście? Zaznacz ją myszką i kliknij Ctrl + F1 lub kliknij na ten blok!