How to make a WSGI app configurable by any server?
in uWSGI (if using the uwsgi protocol) you can pass additional variables with uwsgi_param key value in nginx, SetEnv in apache (both mod_uwsgi and mod_proxy_uwsgi), cgi vars with Cherokee and --http-var with the uwsgi http router. 
For the http protocol (in gunicorn or uWSGI http-socket) the only solution popping in my mind is adding special headers in the proxy configuration that you will parse in your wsgi app (http headers are rewritten as cgi vars prefixed with HTTP_)
Is there a way to distribute a WSGI application that will work out of the box with any server and that will be configurable using the server's built-in features only?
This means that the only configuration file the administrator would have to touch would be the server's configuration file. It wouldn't be necessary to write a custom WSGI script in Python.
mod_wsgi adds configuration variables set with SetEnv to the WSGI environ dictionary that gets passed to the app, but I didn't find a way to do something similar with Gunicorn or uWSGI. Using os.environ works with Gunicorn and uWSGI but not with mod_wsgi because SetEnv doesn't affect os.environ.