This is just a really quick note that will surely help some folks out there.
The Nginx service scripts (including Upstart and init.d) use a PID file to track the applications process id. Nginx, however, forks itself on startup and so the pid changes, and the service scripts have no way to know the new PID. This can break the startup scripts (status, and stop) because they can no longer find the process. If you are hitting this issue, the problem is very likely that Nginx is not updating the PID file for you. The PID file specified in the Nginx configuration file should match that specified in the startup scripts. So when Nginx forks, it updates the PID file, and everything is in sync and the service scripts work as advertised.