The Nginx web server is becoming ever more popular as an alternative to Apache. Especially if you want to use the PHP FastCGI Process Manager (php-fpm) that shipped with PHP 5.3.3.
Lately I have been using the concrete5 CMS a lot. It offers an option to use pretty URLs, but only tells how to configure it for Apache. After reading the Nginx documentation and searching the web I came up with a simple configuration (tested with nginx-0.8.54).
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
access_log logs/access.log;
index index.html index.php;
#default server
server {
listen 80 default_server;
server_name _;
root html;
}
#concrete5
server {
server_name concrete5.com www.concrete5.com;
root /srv/www/vhosts/concrete5.com;
access_log logs/concrete5.access.log;
location / {
try_files $uri $uri/ /index.php/$request_uri;
}
#pass PHP scripts to FastCGI server
location ~ \.php($|/) {
set $script $uri;
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
}
}