A fork of Apache's mod_proxy_scgi that handles SCRIPT_NAME and PATH_INFO sanely.
The problem with mod_proxy_scgi out of the box is that it essentially passes the request path as SCRIPT_NAME, regardless of how your ProxyPass line is configured. That means applications need to know where they are "mounted", instead of being told by Apache (this is basically what SCRIPT_NAME exists to do). And for root-mounted applications (typial Django sites), the entire path is sent as SCRIPT_NAME, causing Django to think every request is for /.
See also: http://www.saddi.com/software/news/archives/78-mod_proxy_scgi,-why!!.html
All this module does is check to see if there is a path component specified after the port in your ProxyPass directive, and if so, uses it (minus any trailing slash) as SCRIPT_NAME. It also trims the SCRIPT_NAME off the front of PATH_INFO, such that SCRIPT_NAME + PATH_INFO = request path.
An example configuration for a Django application mounted under /app may look like this:
<VirtualHost myhost:80>
ServerName myhost.mydomain.com
DocumentRoot /srv/http
<Directory /srv/http>
Options FollowSymLinks Includes
Require all granted
</Directory>
ProxySCGISendfile On
ProxyPass /static !
ProxyPass /app/ scgi://127.0.0.1:5555/app/
</VirtualHost>
In the confirguation above, a request for /app/first/second/ would be passed to Django as having SCRIPT_NAME = /app and PATH_INFO = /first/second/. That way, Django's URL handling/reversing Just Work.
If, for some reason, you want to use this fork of mod_proxy_scgi, but don't want to enable the SCRIPT_NAME and PATH_INFO handling for a certain site, you can disable this processing be setting the proxy-scgi-stupid environment variable:
SetEnv proxy-scgi-stupid