Làm cách nào để chuyển hướng www sang không www trong Route53?


24

Tôi lưu trữ trang web của tôi tại domain.com.

Các mục DNS của tôi trong Route53 như sau:

domain.com      A       xxx.xxx.xxx.xxx      300
domain.com      NS      stuff.awsdns-47.org  172800
domain.com      SOA     stuff.awsdns-47.org  900

Tôi muốn chuyển hướng lưu lượng truy cập từ www.domain.comđến domain.com, vì hiện tại điều này chỉ trả về 404. Câu hỏi này trên SO đã đề xuất một PTRbản ghi và tôi đã thêm rằng:

www.domain.com  PTR     domain.com           300

nhưng nó không hoạt động. Tôi nên làm gì đây?


3
Nếu bạn thực sự muốn gửi chuyển hướng HTTP, bạn không thể thực hiện trong DNS. Nếu bạn không quan tâm đến việc URL trong thanh địa chỉ thay đổi, hãy sử dụng CNAME như pauseka gợi ý. Nếu bạn quan tâm, bạn sẽ cần một máy chủ web nào đó để gửi 301. Một số nhà cung cấp DNS có dịch vụ này, nhưng tôi không tin Route53 thực hiện điều này.
cjc

@cjc Tôi không quan tâm đến URL trong thanh địa chỉ.
fredley

Câu trả lời:


22

PTR là để thiết lập tra cứu IP đảo ngược và đó không phải là điều bạn nên quan tâm. Loại bỏ nó.

Những gì bạn cần là một CNAME cho www:

www.domain.com  CNAME  domain.com 300

15
Đây không phải là một chuyển hướng. Trong trường hợp, bạn phải xác định URL gọi lại trong một số loại dịch vụ của bên thứ ba, giải pháp trên sẽ không hoạt động. Ví dụ: Xác thực oAuth (Facebook, Twitter).
Ck-

14

Bạn cũng có thể đặt ALIAS cho WWW thành Bản ghi của domain.com:

www.domain.com A ALIAS domain.com 300

vì vậy các mục DNS cuối cùng của bạn sẽ như sau:

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)

Tôi đã làm điều này tuy nhiên nó vẫn không hoạt động. Bất cứ điều gì khác có thể được yêu cầu phải được thực hiện?
Utpal - Ur Best Pal

Sau khi thêm bí danh, tôi cần xóa bộ đệm của trình duyệt để làm việc này.
cây_are_great

Và nó phụ thuộc vào TTL trước đó của DNS của bạn.
Hardeep Singh

3

Sau khi bạn có CNAME cho cả example.com và www.example.com, cấu hình nginx này sẽ chuyển hướng lưu lượng truy cập từ http sang https cũng như tất cả www.example.com sang 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;
}

nơi máy chủ thực tế của tôi hoạt động và nghe trên cổng 3000 ... điều này cũng chấm dứt TLS của tôi, tuy nhiên chỉ cần xóa đề cập đến ssl ... được giấu trong các tệp được bao gồm là các cài đặt nginx của tôi để làm cứng hộp


-1

Như đã đề cập ở trên, không thể có DNS tiêu chuẩn.

Đây là giải pháp tôi đã sử dụng:

  • Thiết lập S3 với chuyển hướng trang web tĩnh đến miền không www của bạn
  • Tạo phân biệt Cloudfront cho S3 của bạn (sử dụng miền S3, không phải miền được đề xuất trong tự động hoàn thành bởi AWS)
  • Thêm một bí danh Tuyến 53 Bản ghi vào bản phân phối CloudFront

@Thomas xem câu trả lời được chỉnh sửa.
natanavra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.