I have setup my Django application on Apache+mod_wsgi. For everyone the static files I am using Nginx, as recommended on Django's project website. http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Apache is running on port 8081 and nginx is on port 80. Now many people have recommended that my configuration is wrong and that i should turn back roles of Apache and Nginx. I am unsure why that needs to be. And when indeed my configuration is wrong, why would django website suggest the incorrect method?

The django paperwork you associated with don't suggest you utilize apache like a reverse proxy. They just suggest you utilize another web server, so I'd the paperwork aren't obvious on that subject -- they aren't recommending anything wrong.

My primary answer was presuming you'd nginx like a reverse proxy because port 80 may be the HTTP port, the main one used whenever a browser attempts to visit a url without any port specified.

You will find numerous complete guides to establishing nginx + apache using a quick search but this is actually the gist for establishing nginx:

location / {
        # proxy / requests to apache running django on port 8081
        proxy_pass         http://127.0.0.1:8081/;
        proxy_redirect     off;
    } 

location /media/ { 
        # serve static media directly from nginx
        root   /srv/anuva_project/www/;
        expires 30d;
        break;
    }

All that you should do is take away the proxy lines out of your apache configuration and add the proxy claims for your nginx.conf rather.

If you want for everyone your website from port 8081, you may choose to have nginx listen on port 8081 and also have apache listen on the different port.

The thing is, apache sits in certain obscure port, only serving demands delivered to it from nginx, while static file serving is handled by nginx.