Nginx перенаправляет http на https и не-www на ww
я настраиваю сервер nginx с SSL.
домен с ssl www.mydomain.com
Я хочу перенаправить все запросы от:
http://mydomain.com, http://www.mydomain.com, & https://mydomain.com to
в настоящее время у меня есть следующие серверные блоки:
server{
listen 443 ssl;
root /www/mydomain.com/;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
server{
listen 80;
server_name www.mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
server{
listen ssl 443;
server_name mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
в настоящее время это не работает, но я не понимаю почему. Я могу получить комбинацию работы http - > https или no-www to - > www, но смешивание их, как указано выше, не работает.
2 ответов
перенаправление ssl не будет работать, если Ваш сертификат ssl не поддерживает домен, отличный от www. Конфигурация правильная, но может быть уменьшена до 1 сервера перенаправления
также не забудьте перезагрузить nginx sudo service nginx reload
server {
listen 80;
listen 443 ssl;
server_name example.com;
# add ssl settings
return 301 https://www.example.com$request_uri;
}
Я опаздываю, но вы можете сделать вот так
server{
listen 443 ssl;
server_name www.mydomain.com;
root /www/mydomain.com/;
ssl on;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name www.mydomain.com mydomain.com;
return 301 https://$server_name$request_uri;
}
server{
listen 443;
server_name mydomain.com;
return 301 https://www.$server_name$request_uri;
}
или вы можете заменить return 301 https://www.$server_name$request_uri;
С rewrite ^ http://www.$server_name$request_uri? permanent;
, оба будут работать.
Вам также нужно установить это в google webmaster для лучшего SEO.