Nginx перенаправляет certbot www на не-www
Я пытаюсь перенаправить запрос HTTPS www не на www, но не могу заставить его работать. Какую строку кода мне нужно изменить, чтобы добиться перенаправления?
server {
root /var/www/mydomain.com/html;
index index.html index.htm index.nginx-debian.html;
server_name mydomain.com www.mydomain.com;
#gZip stuff here...
#Certbot stuff here...
}
server {
if ($host = www.mydomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = mydomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name mydomain.com www.mydomain.com;
return 404; # managed by Certbot
}
1 ответ
Решение
Я рекомендую управлять упомянутым ниже способом. Согласно документации Nginx, это их рекомендуемый способ также обрабатывать перенаправление на уровне домена.
server {
listen 443;
server_name www.mydomain.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 443;
server_name mydomain.com;
root /var/www/mydomain.com/html;
index index.html index.htm index.nginx-debian.html;
# Others Configuration...
}
Если вы хотите, вы также можете добавить еще один блок сервера, чтобы перенаправить HTTP на https.
server {
listen 80;
server_name www.mydomain.com mydomain.com;
return 301 https://example.com$request_uri;
}