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 !