Thiết lập chuyển tiếp URL dựa trên DNS trong Amazon Route53 [đã đóng]


140

Tôi đang cố gắng thiết lập chuyển tiếp trong Amazon Route53. Dịch vụ DNS cuối cùng của tôi (Nettica) cho phép tôi định tuyến các yêu cầu đến "aws.example.com" đến "https://myaccount.signin.aws.amazon.com/console/".

Chức năng này có được Route53 hỗ trợ không?

Làm thế nào để Nettica đạt được điều này? Nó có chèn một bản ghi A, CNAME, PTR hoặc TXT đặc biệt không?


Tạo phân phối Cloudfront với URL là nguồn gốc cũng hoạt động. Chỉ cần trỏ tên miền đến bản phân phối Cloudfront từ Route53 và đảm bảo định cấu hình chính xác các TLS certs.
Deiwin

Câu trả lời:


325

Tôi đang gặp vấn đề chính xác giống như Saurav đã mô tả, nhưng tôi thực sự cần tìm một giải pháp không yêu cầu gì khác ngoài Tuyến 53 và S3. Tôi đã tạo một hướng dẫn cách làm cho blog của mình chi tiết những gì tôi đã làm.

Đây là những gì tôi đã đưa ra.


Mục tiêu

Chỉ sử dụng các công cụ có sẵn trong Amazon S3 và Amazon Route 53, tạo Chuyển hướng URL tự động chuyển http://url-redirect-example.vivekmchawla.com đến trang đăng nhập Bảng điều khiển AWS được đặt bí danh là "MyAccount", đặt tại https : //myaccount.signin.aws.amazon.com/console/ .

Hướng dẫn này sẽ dạy bạn thiết lập chuyển tiếp URL tới bất kỳ URL nào, không chỉ các URL từ Amazon. Bạn sẽ tìm hiểu cách thiết lập chuyển tiếp đến các thư mục cụ thể (như "/ console" trong ví dụ của tôi) và cách thay đổi giao thức chuyển hướng từ HTTP sang HTTPS (hoặc ngược lại).


Bước một: Tạo nhóm S3 của bạn

Mở Bảng điều khiển quản lý S3 và nhấp vào "Tạo nhóm"

Mở bảng điều khiển quản lý S3 và nhấp vào "Tạo nhóm".


Bước hai: Đặt tên cho thùng S3 của bạn

Đặt tên cho thùng S3 của bạn

  1. Chọn một tên thùng. Bước này thực sự quan trọng! Bạn phải đặt tên cho thùng chính xác giống như URL bạn muốn thiết lập để chuyển tiếp. Đối với hướng dẫn này, tôi sẽ sử dụng tên "url-redirect-example.vivekmchawla.com".

  2. Chọn bất cứ khu vực nào phù hợp nhất với bạn. Nếu bạn không biết, hãy giữ mặc định.

  3. Đừng lo lắng về việc thiết lập đăng nhập. Chỉ cần nhấp vào nút "Tạo" khi bạn đã sẵn sàng.


Bước 3: Kích hoạt tính năng lưu trữ trang web tĩnh và chỉ định quy tắc định tuyến

Kích hoạt tính năng lưu trữ trang web tĩnh và chỉ định quy tắc định tuyến

  1. Trong cửa sổ thuộc tính, mở cài đặt cho "Lưu trữ trang web tĩnh".
  2. Chọn tùy chọn để "Kích hoạt lưu trữ trang web".
  3. Nhập một giá trị cho "Tài liệu chỉ mục". Đối tượng (tài liệu) này sẽ không bao giờ được S3 phục vụ và bạn không bao giờ phải tải nó lên. Chỉ cần sử dụng bất kỳ tên nào bạn muốn.
  4. Mở cài đặt cho "Chỉnh sửa quy tắc chuyển hướng".
  5. Dán toàn bộ đoạn mã XML sau đây.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Nếu bạn tò mò về những gì XML ở trên đang làm, hãy truy cập Tài liệu AWM để biết "Cú pháp xác định quy tắc định tuyến" . Một kỹ thuật thưởng (không đề cập ở đây) được chuyển tiếp đến các trang cụ tại các máy chủ đích, ví dụ http://redirect-destination.com/console/special-page.html. Đọc về các <ReplaceKeyWith>yếu tố nếu bạn cần chức năng này.


Bước 4: Ghi chú về "Điểm cuối" của nhóm chuyển hướng của bạn

Ghi lại Điểm cuối của nhóm chuyển hướng của bạn

Lưu ý "điểm cuối" của Hosting trang web tĩnh mà Amazon tự động tạo cho nhóm này. Bạn sẽ cần điều này cho lần sau, vì vậy hãy làm nổi bật toàn bộ URL, sau đó sao chép và dán nó vào notepad.

THẬN TRỌNG! Tại thời điểm này, bạn thực sự có thể nhấp vào liên kết này để kiểm tra xem Quy tắc chuyển hướng của bạn đã được nhập chính xác chưa, nhưng hãy cẩn thận! Đây là lý do tại sao...

Giả sử bạn đã nhập sai giá trị bên trong các <Hostname>thẻ trong Quy tắc chuyển hướng của bạn. Có thể bạn vô tình gõ myaccount.amazon.com, thay vì myaccount.signin.aws.amazon.com. Nếu bạn nhấp vào liên kết để kiểm tra URL Điểm cuối, AWS sẽ vui vẻ chuyển hướng trình duyệt của bạn đến địa chỉ sai!

Sau khi nhận thấy lỗi của mình, có thể bạn sẽ chỉnh sửa <Hostname>Quy tắc chuyển hướng của mình để sửa lỗi. Thật không may, khi bạn cố gắng nhấp vào liên kết một lần nữa, rất có thể bạn sẽ bị chuyển hướng trở lại địa chỉ sai! Mặc dù bạn đã sửa <Hostname>mục nhập, trình duyệt của bạn đang lưu vào mục nhập trước đó (không chính xác!). Điều này xảy ra bởi vì chúng tôi đang sử dụng chuyển hướng HTTP 301 (vĩnh viễn), mà các trình duyệt như Chrome và Firefox sẽ lưu trong bộ đệm theo mặc định.

Nếu bạn sao chép và dán URL Điểm cuối vào một trình duyệt khác (hoặc xóa bộ đệm trong trình duyệt hiện tại của bạn), bạn sẽ có cơ hội khác để xem liệu <Hostname>mục nhập được cập nhật của bạn cuối cùng có đúng không.

Để an toàn, nếu bạn muốn kiểm tra URL điểm cuối và Quy tắc chuyển hướng của mình, bạn nên mở một phiên duyệt web riêng tư, như "Chế độ ẩn danh" trong Chrome. Sao chép, dán và kiểm tra URL Điểm cuối trong Chế độ ẩn danh và mọi thứ được lưu trong bộ nhớ cache sẽ biến mất sau khi bạn đóng phiên.


Bước 5: Mở Bảng điều khiển quản lý Route53 và chuyển đến Bộ bản ghi cho Vùng được lưu trữ của bạn (Tên miền)

Mở Bảng điều khiển quản lý tuyến 53 để thêm bộ bản ghi vào vùng lưu trữ của bạn

  1. Chọn Vùng được lưu trữ (tên miền) mà bạn đã sử dụng khi tạo nhóm của mình. Vì tôi đã đặt tên cho nhóm của mình là "url-redirect-example.vivekmchawla.com", tôi sẽ chọn Vùng lưu trữ vivekmchawla.com.
  2. Nhấp vào nút "Chuyển đến Bộ bản ghi".

Bước 6: Nhấp vào nút "Tạo bộ bản ghi"

Nhấp vào nút Tạo Bản ghi

Nhấp vào "Tạo bộ bản ghi" sẽ mở ra cửa sổ Tạo bộ bản ghi ở bên phải của Bảng điều khiển quản lý Route53.


Bước 7: Tạo Tập bản ghi CNAME

Tạo Tập bản ghi CNAME

  1. Trong trường Tên, nhập phần tên máy chủ của URL mà bạn đã sử dụng khi đặt tên nhóm S3 của mình. "Phần tên máy chủ" của URL là mọi thứ thuộc về TRÁI của tên Vùng được lưu trữ của bạn. Tôi đã đặt tên cho nhóm S3 của mình là "url-redirect-example.vivekmchawla.com" và Vùng lưu trữ của tôi là "vivekmchawla.com", vì vậy phần tên máy chủ tôi cần nhập là "ví dụ chuyển hướng url".

  2. Chọn "CNAME - Tên Canonical" cho Loại Bản ghi này.

  3. Đối với Giá trị, dán vào URL Điểm cuối của nhóm S3 mà chúng tôi đã tạo lại trong Bước 3.

  4. Nhấp vào nút "Tạo bộ bản ghi". Giả sử không có lỗi, giờ đây bạn có thể thấy bản ghi CNAME mới trong danh sách Bộ bản ghi của Vùng lưu trữ của bạn.


Bước 8: Kiểm tra chuyển hướng URL mới của bạn

Mở tab trình duyệt mới và nhập URL mà chúng tôi vừa thiết lập. Đối với tôi, đó là http://url-redirect-example.vivekmchawla.com . Nếu mọi thứ hoạt động tốt, bạn nên được gửi trực tiếp đến trang đăng nhập AWS.

Vì chúng tôi đã sử dụng myaccount.signin.aws.amazon.combí danh làm URL đích của chuyển hướng của mình, Amazon biết chính xác tài khoản nào chúng tôi đang cố truy cập và đưa chúng tôi trực tiếp đến đó. Điều này có thể rất thuận tiện nếu bạn muốn cung cấp một liên kết đăng nhập AWS ngắn, sạch sẽ, có thương hiệu cho nhân viên hoặc nhà thầu.

Tất cả đã được làm xong!  Chuyển tiếp URL của bạn sẽ đưa bạn đến trang đăng nhập AWS.


Kết luận

Cá nhân tôi yêu thích các dịch vụ AWS khác nhau, nhưng nếu bạn đã quyết định chuyển quản lý DNS sang Amazon Route 53, việc thiếu chuyển tiếp URL dễ dàng có thể gây khó chịu. Tôi hy vọng hướng dẫn này đã giúp việc thiết lập chuyển tiếp URL cho Khu vực được lưu trữ của bạn dễ dàng hơn một chút.

Nếu bạn muốn tìm hiểu thêm, vui lòng xem các trang sau từ trang Tài liệu AWS.

Chúc mừng!


15
+1 cho giải pháp hoàn toàn thông minh này - cảm ơn rất nhiều vì đã dành thời gian biên soạn hướng dẫn từng bước tuyệt vời như vậy, tôi đã cập nhật câu trả lời của mình để giới thiệu người đọc tương lai với bạn!
Steffen Opel

23
Lưu ý :: Đối với những người muốn chuyển hướng tên miền gốc: example.org -> example.com - thực hiện mọi thứ giống nhau ngoại trừ sử dụng Bản ghi A với bật "Bí danh: Có". Sau đó chọn xô làm mục tiêu.
JaredBroad

10
Giải pháp tuyệt vời. Nhưng tôi đã gặp phải một vấn đề khi sử dụng https cho URL gốc. Nếu nhóm tôi định hướng lại là dev.example.com, thì việc chuyển hướng lại hoạt động rất tốt cho http: // dev.example.com nhưng không thành công cho https: // dev.example.com. Tôi đã không tìm thấy một giải pháp cho vấn đề này.
Greg

4
@Greg Tôi nghĩ rằng có thể có liên quan đến cách Amazon xử lý HTTPS cho S3. Thật không may, khi sử dụng CNAME để truy cập nhóm S3, bạn không thể buộc SSL bằng cách thêm "https" vì Amazon không lưu trữ chứng chỉ cho "* .example.com". Vì S3 sẽ không cho phép kết nối, chúng tôi không bao giờ có được logic chuyển hướng. Thật không may, tôi không thể thấy một cách giải quyết cho vấn đề này.
Vivek M. Chawla

17
Có một tùy chọn mới "Chuyển hướng tất cả các yêu cầu sang tên máy chủ khác" trong các tùy chọn khóa. Tôi đặt vào đó url đăng nhập IAM và nó hoạt động như một bùa mê, không cần XML.
Dan Milon

145

Hỗ trợ AWS đã chỉ ra một giải pháp đơn giản hơn. Về cơ bản, đó là cùng một ý tưởng được đề xuất bởi @Vivek M. Chawla, với cách thực hiện đơn giản hơn.

AWS S3:

  1. Tạo một nhóm có tên miền đầy đủ của bạn, như aws.example.com
  2. Trên thuộc tính nhóm, chọn Redirect all requests to another host namevà nhập URL của bạn: https://myaccount.signin.aws.amazon.com/console/

Tuyến đường AWS53:

  1. Tạo một bộ bản ghi loại A. Thay đổi Bí danh thành Yes. Nhấp vào Alias Targettrường và chọn nhóm S3 bạn đã tạo ở bước trước.

Tham khảo: Cách chuyển hướng tên miền bằng Amazon Web Services

Tài liệu chính thức của AWS: Có cách nào để chuyển hướng một tên miền sang tên miền khác bằng Amazon Route 53 không?


16
Điều này hoạt động tuyệt vời cho HTTP nhưng không phải HTTPS.
huyền thoại

@mythofechelon Ý bạn là gì? Tôi chưa có vấn đề gì với https cho đến nay. Nếu bạn muốn sử dụng https với tên miền của mình (ví dụ: https: // aws.example.com), đây là một vấn đề hoàn toàn khác, bởi vì bạn sẽ cần một máy chủ có chứng chỉ ssl để có thể làm điều đó.
Roberto Schneiders

1
Tài liệu chính thức có tại đây: aws.amazon.com/premiumsupport/ledgeledge-center/,
Mario Olivio Flores

2
Liệu Redirect all requests to another host nametùy chọn này vẫn còn tồn tại? Tôi không thể nhìn thấy nó khi tôi đi đến các thuộc tính xô.
Aidan

1
Đây phải là câu trả lời chính xác, tốt hơn là tham chiếu các thành phần bên trong AWS bằng cách sử dụng Bí danh cho mục đích hiệu suất thay vì CNAME (hoạt động nhưng không phải là cách tiếp cận tốt nhất).
Douglas Figueroa

11

Tôi đã có thể sử dụng nginx để xử lý chuyển hướng 301 đến trang đăng nhập aws.

Chuyển đến thư mục nginx conf của bạn (trong trường hợp của tôi là /etc/nginx/sites-availabletrong đó tôi tạo liên kết tượng trưng /etc/nginx/sites-enabledcho các tệp conf được bật).

Sau đó thêm đường dẫn chuyển hướng

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Nếu bạn đang sử dụng nginx, rất có thể bạn sẽ có các khối máy chủ bổ sung (virtualhost trong thuật ngữ apache) để xử lý apex vùng của bạn (example.com) hoặc tuy nhiên bạn đã thiết lập nó. Đảm bảo rằng bạn có một trong số chúng được đặt làm máy chủ mặc định của bạn.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

Trong Route 53, thêm một A recordcho aws.example.comvà thiết lập giá trị cho cùng một IP sử dụng cho đỉnh khu vực của bạn.


Thậm chí tốt hơn là sử dụng một bản ghi bí danh để chỉ đến bộ cân bằng tải đàn hồi ở phía trước của máy này.
maletor

9

Cập nhật

Mặc dù câu trả lời ban đầu của tôi dưới đây vẫn hợp lệ và có thể hữu ích để hiểu nguyên nhân khiến việc chuyển tiếp URL dựa trên DNS không khả dụng qua Amazon Route 53 , tôi khuyên bạn nên kiểm tra giải pháp gián tiếp hoàn toàn thông minh của Vivek M. Chawla thông qua việc giới thiệu trong khi đó Amazon S3 Hỗ trợ chuyển hướng trang web và đạt được một máy chủ độc lập ít hơn và do đó giải pháp miễn phí trong AWS chỉ như vậy.

  • Việc triển khai một giải pháp tự động để tạo ra các chuyển hướng như vậy chỉ còn là một bài tập cho người đọc, nhưng xin hãy tôn vinh câu trả lời sử thi của Vivek bằng cách xuất bản giải pháp của bạn;)

Câu trả lời gốc

Nettica phải chạy một giải pháp chuyển hướng tùy chỉnh cho việc này, đây là vấn đề:

Bạn có thể tạo một bí danh CNAME như aws.example.comcho myaccount.signin.aws.amazon.com, tuy nhiên, DNS không cung cấp hỗ trợ chính thức cho việc đặt bí danh cho một thư mục con như consoletrong ví dụ này.

  • Thật đáng tiếc khi AWS dường như không làm điều này theo mặc định khi nhấn https://myaccount.signin.aws.amazon.com/(tôi mới thử), vì nó sẽ giải quyết vấn đề của bạn ngay lập tức và có nhiều ý nghĩa ngay từ đầu; Ngoài ra, nó sẽ khá dễ dàng để cấu hình vào cuối của họ.

Vì lý do đó, một số nhà cung cấp DNS rõ ràng đã triển khai một giải pháp tùy chỉnh để cho phép chuyển hướng đến các thư mục con; Tôi mạo hiểm đoán rằng về cơ bản họ đang tạo điều kiện cho bí danh CNAME cho một miền của riêng họ và đang chuyển hướng một lần nữa từ đó đến đích cuối cùng thông qua Chuyển hướng HTTP 3xx ngay lập tức .

Vì vậy, để đạt được kết quả tương tự, bạn cần phải có một dịch vụ HTTP đang thực hiện các chuyển hướng này, đây không phải là giải pháp đơn giản mà người ta hy vọng. Có lẽ / Hy vọng rằng ai đó có thể đưa ra một cách tiếp cận thông minh hơn mặc dù.


3
CNAME là bí danh và không chuyển hướng.
ejain

@ejain - Tất nhiên là bạn đúng, tôi đã sửa lỗi này cho phù hợp (chắc chắn đã bỏ lỡ thông báo trước đó); cảm ơn vì đã chỉ ra cụm từ có khả năng gây hiểu lầm này!
Steffen Opel

0

Nếu bạn vẫn gặp sự cố với cách tiếp cận đơn giản, hãy tạo một nhóm trống sau đó Redirect all requests to another host namelưu trữ web tĩnh trong các thuộc tính thông qua bảng điều khiển. Đảm bảo rằng bạn đã thiết lập 2 bản ghi A trong tuyến53, một cho final-destination.comvà một cho redirect-to.final-destination.com. Các cài đặt cho mỗi trong số này sẽ giống hệt nhau, nhưng tên sẽ khác nhau để phù hợp với tên mà bạn đã đặt cho các nhóm / URL của mình.

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.