Привет!
На примере моей задачи: одна бд на несколько однотипных сайтов, нужно было отображать разную главную страницу, подгружать немного разные стили css, контакты и т.д.
В settings.py
INSTALLED_APPS = [
...
'django.contrib.sites',
...
]
ALLOWED_HOSTS = ['subdomen.example.com', 'example.com', 'subdomen2.example.com']
Не забудь мигрировать.
В админке появится раздел "сайты", где можно добавить домены 'subdomen.example.com', 'example.com', 'subdomen2.example.com'.
Во views.py
current_site = get_current_site(request).domain # можно использовать id, но мне показалось нагляднее использовать domain
if current_site == 'subdomen.example.com':
# ...some logic например разный context или template
elif current_site == 'subdomen2.example.com':
# ...some logic например разный context или template
Для nginx все просто, для каждого домена создаешь конфиг, просто они ведут в одно место (сокет/порт ), можно создать один конфиг с if и т.д. но по мне так неудобно.
...
location / {
# в сокет
proxy_pass http://unix:/tmp/example.socket;
# в порт, выбери одно
#proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
Есть еще вариант когда нужна совсем разная логика, тогда создается несколько файлов settings.py
И нумеруются SITE_ID=1, SITE_ID=2, SITE_ID=3
По uWSGI не могу вспомнить есть ли там нюансы, я давно пользуюсь gunicorn (привык просто)
Но никаких особых настроек отличающихся от обычных делать не нужно:
gunicorn --bind unix:/tmp/unix:/tmp/example.socket project.wsgi:application