О, дякую! Я ж ось тільки що зрозумів що може бути більше ніж одна директива server 
Тож мені треба щоб працювала наступна схема:
1. HTTPS і всі домени без www - з'єднуємо з django додатком;
2. HTTPS і всі домени з www - редірект на домен HTTPS без www;
3. HTTP і всі домени з і без www - редірект на HTTPS без www.
Ось таке в мене вийшло:
# Redirect all HTTPS with www to HTTPS without www
server {
    listen 443;
    server_name www.domain.net;
    return 301 https://domain.net$request_uri;
    ssl_certificate         /etc/...;
    ssl_certificate_key     /etc/...;
}
server {
    listen 443 ssl;
    server_name www.domain.com;
    return 301 https://domain.com$request_uri;
    ssl_certificate         /etc/...;
    ssl_certificate_key     /etc/...;
}
# Redirect all HTTP (www and non www) to HTTPS without www
server {
    listen 80;
    server_name www.domain.net domain.net;
    return 301 https://domain.co.uk$request_uri;
}
server {
    listen 80;
    server_name www.domain.com domain.com;
    return 301 https://domain.com$request_uri;
}
# Handle all HTTPS without www
server {
    charset  utf-8;
    listen 443 ssl;
    server_name domain.com domain.net;
    # SSL Config
    ssl_certificate         /etc/...;
    ssl_certificate_key     /etc/...;
    location / {
            proxy_set_header    Host                    $http_host;
            proxy_set_header    User-Agent              $http_user_agent;
            ....
    }
    ...
}
Робоче. Все працює, як треба.
Але, як на мене, трохи не ОК, бо там деякі налаштування повторюються.)) 
Як вважаєте, підхід нормальний отакий? Чи щось можна оптимізувати?