Ваши требования не совсем ясны, но я предполагаю, что вы не делаете ничего хитрого, а также предположите, что ваши "project1", "project2" - это имена клиентов, которые не нуждаются в особом брендинге.
Сначала о ваших идеях:
Вероятно, вам не понадобится использовать каркас сайтов, если каждый сайт не имеет своего бренда. Инфраструктура сайта хорошо работает, выполняя то, для чего она была разработана, что представляет различные виды общего набора данных.
Это бы сработало, но, вероятно, не лучший подход ИМО.
Это неуправляемо.
Теперь, это действительно сложная тема, потому что есть так много проблем. Приличное место для начала чтения - это High Scalability Blog , и особенно уместным для вас будет пост 37signals Architecture .
Наконец, вот что я делаю в небольшом SaaS-приложении (которое не требует крайней масштабируемости):
Использование каркаса сайтов (поскольку пользовательские страницы будут маркироваться партнером / посредником, а у каждого партнера есть уникальная страница входа)
Используйте mod_wsgi, чтобы минимизировать использование ресурсов во всех экземплярах Django.
Вместо промежуточного программного обеспечения я ставлю общий код в верхней части каждого представления, который идентифицирует компанию пользователя. Мне нужно это для логики в представлениях, поэтому я не думаю, что это полезно в промежуточном программном обеспечении.