Symfony 1.4 with nginx is fantastic. I have already made the setup, here is a generalization of my production configuration, which I can vouch for, is suitable for use in production.
server {
listen 80;
server_name mysite.com;
root /var/www/mysite.com/web;
access_log /var/log/nginx/mysite.com.access.log;
error_log /var/log/nginx/mysite.com.error.log;
location ~ ^/(index|frontend|frontend_dev|backend|backend_dev)\.php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS off;
fastcgi_pass 127.0.0.1:9000;
}
location / {
index index.php;
try_files $uri /index.php?$args;
}
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/mysite.com.crt;
ssl_certificate_key /etc/ssl/private/mysite.com.key;
server_name mysite.com;
root /var/www/mysite.com/web;
access_log /var/log/nginx/mysite.com.access.log;
error_log /var/log/nginx/mysite.com.error.log;
location ~ ^/(index|frontend|frontend_dev|backend|backend_dev)\.php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
}
location / {
index index.php;
try_files $uri /index.php?$args;
}
}
PHP 5.4 Note
php5-fpm 5.4, which comes with dotdeb, now uses sockets instead of the default loopback. If you are using PHP 5.4 and you get a "bad gateway" error with the above configuration, try replacing all instances 127.0.0.1:9000with unix:/var/run/php5-fpm.sock.
php-fpm 5.4 , PHP , security.limit_extensions. , , , .php. - .
index.php, frontend.php, frontend_dev.php, backend.php backend_dev.php PHP.
php nginx , symfony,
location \.php$ {
...
}
, URL-, pathinfo, :/index.php/foo/bar.
fix_pathinfo = 0 php.ini. URL- pathinfo, symfony . , , php.
. nginx + php-cgi
Squeeze Debian, dotdeb nginx php-fpm, Ubuntu 10.04 Lucid Lynx, ppa/brianmercer php-fpm. .
PHP extrafile.php, , :
location ~ ^ (index | frontend | frontend_dev | backend | backend_dev | ).php ${...
}
: Symfony 2.0 ! , 1.4:
server {
listen 80;
server_name symfony2;
root /var/www/symfony2/web;
error_log /var/log/nginx/symfony2.error.log;
access_log /var/log/nginx/symfony2.access.log;
location / {
index app.php;
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /app.php last;
}
location ~ (app|app_dev).php {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS off;
fastcgi_pass 127.0.0.1:9000;
}
}
server {
listen 443;
server_name symfony2;
root /var/www/symfony2/web;
ssl on;
ssl_certificate /etc/ssl/certs/symfony2.crt;
ssl_certificate_key /etc/ssl/private/symfony2.key;
error_log /var/log/nginx/symfony2.error.log;
access_log /var/log/nginx/symfony2.access.log;
location / {
index app.php;
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /app.php last;
}
location ~ (app|app_dev).php {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS off;
fastcgi_pass 127.0.0.1:9000;
}
}