Nginx : FastCGI PHP par socket UNIX
Boris HUISGEN March 18, 2009
L’exécution de scripts PHP avec le serveur web Nginx s’effectue par le biais du module FastCGI. Ce module assure la liaison entre Nginx et l’interpréteur PHP par socket UNIX ou TCP.
L’utilitaire spawn-fcgi fourni avec le serveur Lighttpd est utilisé ici. Il est chargé d’ouvrir la socket de communication et de maintenir le pool de processus php-cgi.
Voici mon script de lancement des interpréteurs PHP fcgi-php.sh qui s’appuie sur une socket UNIX :
|
|
Le fichier socket doit posséder les permissions suffisantes pour que Nginx puisse y écrire.
Au niveau Nginx, la configuration du module FastCGI est la suivante (/etc/nginx/fastcgi_params) :
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Enfin, la configuration de l’hôte virtuel :
server {
listen 80;
server_name www.site.fr
location / {
root /home/www/site.fr/html;
index index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/fcgi-php.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/site.fr/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
La dernière option location permet de mapper les fichiers d’extension .php au module FastCGI, plus précisément à la socket des processus spawn-fcgi.