Чтобы ответить на ваш вопрос о размещении сервера nginx перед другим nginx: Нет, обычно для этого нет веских причин. Этот старый совет исходит от Apache, особенно когда mod_python использовался с prefork MPM Apache. В этой настройке каждый экземпляр Django будет запускаться как отдельный процесс внутри контейнера mod_python / Apache, и для этого потребуется много оперативной памяти. Идея состояла в том, чтобы сохранить обслуживание статических файлов вдали от Apache, разместив легкий, управляемый событиями HTTP-сервер, такой как nginx, перед тяжелыми процессами Apache. Это позволило сэкономить оперативную память и повысить производительность. При использовании облегченного сервера, такого как nginx, для всех запросов это не проблема.
nginx хорошо справляется с перезаписью URL, посмотрите в модуль Rewrite.
В вашем вопросе не указано, какую нагрузку (число соединений в секунду) вы ожидаете или почему вы хотите использовать nginx. Если это для блога на VPS-сервере или аналогичной установки с низкой нагрузкой, то обратите внимание на использование Apache с mod_wsgi в режиме демона. Это имеет производительность и использование ОЗУ очень близко к FastCGI, и mod_wsgi недавно стал официально рекомендованным способом размещения Django, см.
http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
В общем, я бы предложил использовать Apache / mod_wsgi, если это возможно, это стабильная и гибкая комбинация. Убедитесь, что вы не «преждевременно оптимизируете», используя nginx, где Apache + mod_wsgi прекрасно подойдет. Обзор производительности mod_wsgi в режиме демона смотрите:
http://code.google.com/p/modwsgi/wiki/PerformanceEstimates
nginx великолепен, но для решения Django nginx ИМХО лучше подходит в качестве балансировщика нагрузки для многих экземпляров Apache или отдельного сервера для статических файлов. Оба этих сценария использования имеют смысл только для больших нагрузок.