Как перенаправить www на не-www в Route53?

24

Я размещаю свой сайт по адресу 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

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

fredley
источник
3
Если вы действительно хотите отправить перенаправление HTTP, вы не можете сделать это внутри DNS. Если вас не волнует изменение URL в адресной строке, используйте CNAME, как подсказывает Пауска. Если вам не все равно, вам понадобится какой-нибудь веб-сервер для отправки 301. Некоторые провайдеры DNS используют это в качестве службы, но я не верю, что Route53 делает это.
CJC
@cjc Меня не волнует URL в адресной строке.
Фредли

Ответы:

22

PTR предназначен для настройки обратного IP-поиска, и вам не следует об этом беспокоиться. Убери это.

Что вам нужно, это CNAME для www:

www.domain.com  CNAME  domain.com 300
pauska
источник
15
Это не редирект. В случае, если вам нужно определить URL обратного вызова в какой-либо сторонней службе, вышеуказанное решение не будет работать. Например oAuth (Facebook, Twitter) Аутентификация.
Ck-
14

Вы также можете установить для 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)
Хардип Сингх
источник
Я сделал это, однако все еще не работает. Что-нибудь еще, что может потребоваться сделать?
Утпал - Ур Бест Пал
После добавления псевдонима мне нужно было удалить кеш браузера, чтобы заставить это работать.
trees_are_great
И это зависит от предыдущего TTL вашего DNS.
Хардип Сингх,
3

После того, как у вас есть 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, чтобы укрепить коробку

Скотт Стенсленд
источник
-1

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

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

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