Today, I had to deploy some code onto an nginx server. I like nginx because while it’s not as easy to use straight out of the box as apache, it’s not too hard to configure and it’s very fast.

I set up my virtual host:

server {
	server_name sub.domain.net;
	...
	root /var/www/sub.domain.net/public/;
	...
}

… and I checked the site. Server error?!

Failed opening required '/var/www/sub.domain.net/public../app/...

I know I put the trailing slash in the document root, so why is nginx stripping it?

The solution is in /etc/nginx/fastcgi_params. Just change:

fastcgi_param	DOCUMENT_ROOT		$document_root;

into

fastcgi_param	DOCUMENT_ROOT		$document_root/;

and restart nginx. It feels like a bit of a hack, but you now have the trailing slash you need.

Source