Назад | Перейти на главную страницу

Как мне перенаправить 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

но это не сработало. Что мне делать?

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)

После того, как у вас есть 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 для усиления защиты

Мне удалось это настроить, используя дополнительную корзину S3.

Я хочу, чтобы мой веб-сайт был доступен без www example.com. В моем случае, example.com настроен с размещенной зоной маршрута 53, корзиной s3 и облачным распределением с настраиваемым сертификатом ssl.

я хочу www.example.com перенаправить на example.com. Для этого я установил новое ведро s3 для www.example.com. Я установил это на общественный и настроить статический хостинг веб-сайтов для перенаправления всех запросов. Целевой сегмент или домен example.com. Поскольку у меня есть сертификат ssl, настроенный на example.com, Я установил протокол https.

На маршруте 53 в зоне хостинга mydomain.com я создал новую запись A для www.example.com с псевдонимом, указывающим на новый веб-сайт корзины www s3.

Теперь все запросы к www.example.com перенаправить на https://example.com.

Надеюсь это поможет.

Как упоминалось выше, со стандартным DNS это невозможно.

Вот решение, которое я использовал:

  • Настройте S3 со статическим перенаправлением веб-сайта на домен без www.
  • Создайте дистрибутив Cloudfront для вашего S3 (используя домен S3, а не тот, который предлагается в автозаполнении AWS)
  • Добавьте псевдоним Route 53 A Record в раздачу CloudFront

Изучив множество онлайн-руководств, я обнаружил, что это было очень просто, без необходимости в каких-либо услугах, кроме Route53.

Это пример конфигурации для домена с www,

Это пример конфигурации для того же домена без www,

Итак, в основном вам нужно снова скопировать ту же конфигурацию, включая IP-адрес, из www.domain.com к domain.com.

И это нужно подождать некоторое время, чтобы изменения вашего домена распространялись, и вы сможете увидеть, как ваш сайт загружается как в домене с www, так и без него.