server {
listen 80;
server_name www.domain.com;
rewrite ^ http://domain.com$request_uri? permanent;
}
server {
listen 80;
server_name domain.com;
root /home/django/project;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8006/;
}
error_page 500 502 503 504 /media/50x.html;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/project.crt;
ssl_certificate_key /etc/ssl/private/project.key;
keepalive_timeout 70;
server_name domaiin.com www.domain.com;
root /home/django/project;
# без этого 301 переадресация не работала
if ($http_host != "domain.com") {
rewrite ^ $scheme://domain.com$request_uri permanent;
}
location / {
proxy_pass http://127.0.0.1:8006;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
}
}
Обращаем внимание на переадресацию сервера с www, который надо направить на нужный протокол. Такой rewrite не будет работать:
server {
listen 443;
server_name www.domain.com;
rewrite ^ http://domain.com$request_uri? permanent;
}
Помогла конструкция:
if ($http_host != "domain.com") {
rewrite ^ $scheme://domain.com$request_uri permanent;
}
Либо $scheme
заменить на https
.