Paramétrer Nginx pour accueillir Zend Framework

Nginx est un serveur web réputé pour sa légèreté. Toutefois, les habitués d'Apache (comme moi) pourront être quelque peu déroutés lors des premiers paramétrages.

Activer, désactiver un site

Par exemple, si les répertoires /etc/nginx/sites-available et /etc/nginx/sites-enabled rappellent bien /etc/apache2/sites-available et /etc/apache2/sites-enabled, il n'y a dans le package nginx pour Debian (au moment où ces lignes sont écrites) pas d'équivalent aux commandes (fort pratiques) a2ensite et a2dissite. Il faut donc recourir à la main à la création de liens comme ci-dessous :

cd /etc/nginx/sites-enabled
ln -s ../sites-available/monSite

puis redémarrer le serveur par

service nginx restart

Toutefois, il semble que certains utilisateurs astucieux s'activent : https://github.com/perusio/nginx_ensite.

La gestion de PHP

La gestion de PHP est également différente : il n'y pas le mod_php mais il est proposé d'utiliser FastCGI Process Manager (PHP FPM) comme décrit ici.

Cas pratique : avec une application Zend Framework 1

Voici le code du "virtual host" qui m'a permis de faire fonctionner l'application (basée sur Zend Framework 1) avec Nginx :

server {
  server_name app.domain.tld;
  root /var/www/app/public;
  index index.php;
  try_files $uri $uri/ @notfile;

  location @notfile {
    rewrite ^(.*) /index.php last;
  }

  location ~ \\.php$ {
   fastcgi_pass unix:/var/run/php5-fpm.sock;
   fastcgi_index /index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
  }
}

Et pour passer des paramètres comme cela se fait dans Apache avec

RequestHeader add MY_SETTING my_value

on utilisera dans Nginx la commande :

fastcgi_param MY_SETTING my_value;

En espérant que ces petites astuces vous permettront de mieux faire cohabiter Zend Framework et Nginx !

Vus : 1509
Publié par Pierre-Alain Bandinelli : 117