О, дякую! Я ж ось тільки що зрозумів що може бути більше ніж одна директива 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;
....
}
...
}
Робоче. Все працює, як треба.
Але, як на мене, трохи не ОК, бо там деякі налаштування повторюються.))
Як вважаєте, підхід нормальний отакий? Чи щось можна оптимізувати?