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

але це не спрацювало. Що мені робити?


3
Якщо ви дійсно хочете надіслати перенаправлення HTTP, ви не можете це зробити всередині DNS. Якщо вас не хвилює зміна URL-адреси в адресному рядку, використовуйте CNAME, як пропонує Pauska. Якщо вам все-таки важливо, вам буде потрібно певний веб-сервер, щоб надіслати 301. Деякі постачальники DNS мають це як послугу, але я не вірю, що Route53 робить це.
cjc

@cjc Мене не цікавить URL-адреса в адресному рядку.
Фредлі

Відповіді:


22

PTR призначений для встановлення зворотного пошуку IP-адреси, і це не те, про що ви повинні дбати. Видали це.

Що вам потрібно, це CNAME для www:

www.domain.com  CNAME  domain.com 300

15
Це не перенаправлення. У випадку, якщо вам доведеться визначити URL-адресу зворотного виклику в якійсь сторонній службі, вищевказане рішення не працюватиме. Наприклад, аутентифікація oAuth (Facebook, Twitter).
Ck-

14

Ви також можете встановити ALIAS для WWW на запис 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)

Я зробив це, однак це все ще не працює. Що ще, що може знадобитися зробити?
Utpal - Ur Best Pal

Після додавання псевдоніму мені потрібно було видалити кеш браузера, щоб це працювало.
tree_are_great

І це залежить від попереднього TTL вашого DNS.
Hardeep Singh

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)
  • Додайте маршрут 53 A Записати псевдонім до дистрибутива CloudFront

@Thomas див. Відредаговану відповідь.
натанавра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.