I have to admit, I’d heard of [Passenger/mod_rails](http://www.modrails.com/) before, but I only found out yesterday by chance that it also handles WSGI. Since most of any serious work I do is with Python, this caught my attention. Passenger turned out to be simple to setup, and braindead-simple to get running.
I’ve gone through several iterations of how to run my WSGI, from Apache mod_wsgi to Nginx mod_wsgi to Nginx proxy + CherryPy, and now back to Apache “mod_rails”. As an aside, Nginx mod_wsgi sounds like a good idea, but it isn’t. The author has written about this as well, and I encourage you to Google for more information.
One thing to remember when you setup your WSGI app with Passenger is that your passenger_wsgi.py file should be in the directory _above_ your DocumentRoot. So if your docroot is /var/www/my.site/public, put the .py in /var/www/my.site/
I also run two redmines, so this simplifies that as well, since Passenger does rails primarily.
Goodbye, Nginx TCP proxying.