Jest to kontynuacja artykułu: Nginx z obsługą php@FastCGI part I
Przed rozpoczęciem konfiguracji nginx-a musimy zaopatrzyć sie w następujące pakiety: php5, php5-cgi, spawn-cgi, jeśli będziemy chcieli wykorzystywać bazę np. mysql to dodatkowo:php5-mysql, php5-mcrypt.Mbr /> Aplikację spawn-cgi, zapożyczymy z pakiety lighttpd.
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 3 -u www-data -f /usr/bin/php5-cgi
#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case "$1" in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME katalog_naszej_strony$fastcgi_script_name;
include fastcgi_params;
}
}
Warto zoptymalizować konfigurację tak, aby do interpretera PHP trafiały wyłącznie żądania wymagające serwowanie "dynamicznych stron".
PHP potrafi też serwować statyczne pliki czy obrazki ale nginx zrobi to szybciej i mniejszym kosztem.
Naprzykład:
location = /images {
auth_basic off;
root /var/www/strona/images;
}
location / {
root /var/www/strona;
index index.php;
}
location = /50x.html {
root /var/www/nginx-default;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/strona$fastcgi_script_name;
include fastcgi_params;
}
}