Как перенаправить www на не-www в Route53?
Я размещаю свой сайт на domain.com
,
Мои записи DNS в Route53 следующие:
domain.com A xxx.xxx.xxx.xxx 300
domain.com NS stuff.awsdns-47.org 172800
domain.com SOA stuff.awsdns-47.org 900
Я хотел бы перенаправить трафик с www.domain.com
в domain.com
, так как в настоящее время это просто возвращает 404. Этот вопрос на SO предложил PTR
запись, и я добавил, что:
www.domain.com PTR domain.com 300
но это не сработало. Что мне делать?
7 ответов
PTR предназначен для настройки обратного IP-поиска, и вам не следует об этом беспокоиться. Убери это.
Что вам нужно, это CNAME для www:
www.domain.com CNAME domain.com 300
Вы также можете установить для ALIAS для WWW запись A domain.com:
www.domain.com A ALIAS domain.com 300
поэтому ваши окончательные записи DNS будут выглядеть следующим образом:
domain.com A xxx.xxx.xxx.xxx 300
domain.com NS stuff.awsdns-47.org 172800
domain.com SOA stuff.awsdns-47.org 900
www.domain.com A ALIAS domain.com (Hosted Zone ID)
Мне удалось настроить эту настройку, используя дополнительную корзину S3.
Я хочу, чтобы мой веб-сайт был доступен по адресу, отличному от www. В моем случае настроена зона хостинга маршрута 53, корзина s3 и облачный дистрибутив с пользовательским сертификатом SSL.
Я хочу перенаправить на . Для этого я настроил новую корзину s3 для . Я сделал его общедоступным и настроил статический хостинг веб-сайтов для перенаправления всех запросов. Целевой сегмент или домен — . Поскольку у меня настроен SSL-сертификатexample.com
, я установил протокол https.
На маршруте 53 в зоне хостинга mydomain.com я создал новую запись A с псевдонимом, указывающим на новый веб-сайт корзины www s3.
Теперь все запросыwww.example.com
перенаправить наhttps://example.com
.
Надеюсь это поможет.
После того, как у вас есть CNAME для example.com и www.example.com, эта конфигурация nginx перенаправит трафик с http на https, а также со всех www.example.com на example.com.
server {
listen 80 ;
server_name example.com, www.example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
server { # redirect www to normal domain
listen 443 ssl ;
server_name www.example.com;
include /etc/nginx/myprojname/include/ssl;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl ;
include /etc/nginx/myprojname/include/ssl;
server_name example.com;
include /etc/nginx/snippets/nginx_common_location_443;
location / {
proxy_pass http://127.0.0.1:3000/;
}
include /etc/nginx/myprojname/include/custom_server_include;
}
где мой реальный сервер работает и прослушивает порт 3000 ... это также завершает мой TLS, но просто удалите упоминание о ssl... спрятанные в этих включенных файлах - мои настройки nginx, чтобы укрепить коробку
Как упоминалось выше, это невозможно со стандартным DNS.
Вот решение, которое я использовал:
- Настройте S3 со статическим перенаправлением веб-сайта на ваш домен не из www
- Создайте дистрибутив Cloudfront для вашего S3 (используя домен S3, а не тот, который предлагается при автозаполнении AWS)
- Добавьте псевдоним Route 53 A Record в дистрибутив CloudFront.
Это зависит от того, как вы обслуживаете сайт. Самый простой способ — это, вероятно, обслуживание через Cloudfront. Таким образом, вы просто создадите дистрибутив Cloudfront и добавите домен www и не www в качестве псевдонима. Cloudfront позаботится об обоих.
Изучив множество онлайн-руководств, я обнаружил, что это очень просто, без необходимости использовать какой-либо сервис, кроме Route53.
Это пример конфигурации для домена с www .
Это пример конфигурации для того же домена без www .
Таким образом, вам придется снова скопировать ту же конфигурацию, включая IP-адрес, с www.domain.com на домен.com .
И все, подождите некоторое время, чтобы изменения вашего домена распространились, и вы сможете увидеть, как ваш веб-сайт загружается как в домене с www, так и без него.