6

Tôi có miền formulagrid.com.Hỗ trợ chuyển hướng URL HTTPS với phân phối CloudFront đơn lẻ

Tôi đang sử dụng AWS S3 để lưu trữ nó dưới dạng trang web tĩnh. Vấn đề của tôi là tôi muốn chuyển hướng tên miền phụ www vào miền trần như vậy:

  • https://www.formulagrid.com -> https://formulagrid.com
  • http://www.formulagrid.com -> https://formulagrid.com

Amazon cung cấp URL chuyển hướng từ S3 xô đến S3 xô nếu cả hai được thiết lập cho lưu trữ trang web tĩnh.

Vì vậy, những gì tôi phải làm là thiết lập hai xô:

  • formulagrid.com - thực tế trang web
  • www.formulagrid.com - tồn tại chỉ để chuyển hướng đến các trang web thực tế

này hoạt động hoàn toàn tốt đẹp nếu bạn chỉ hoạt động trên HTTP, nhưng S3 hoàn toàn không hỗ trợ HTTPS.

Cách mà người dùng có thể sử dụng HTTPS để kết nối với một trang web tĩnh S3 là bằng cách thiết lập phân phối CloudFront trước một thùng S3. CloudFront, tuy nhiên, trong khi nó cung cấp HTTPS, chủ yếu tồn tại để hoạt động như một CDN.

Ban đầu, tôi đã có một thiết lập phân phối CloudFront duy nhất ở phía trước thùng S3 giữ vị trí thực tế. Mọi thứ dường như hoạt động: trang web được phân phối trên CDN, nó có HTTPS và HTTP được chuyển hướng đến HTTPS.

Có một ngoại lệ.

  • https://www.formulagrid.com là một hoàn toàn bị hỏng trang

Sau khi cố gắng tìm ra nguồn gốc của các lỗi trong một thời gian, tôi nhận ra đó là vì nó đã không đi qua CDN, và cố gắng truy cập S3 trên HTTPS không hoạt động.

Cuối cùng, những gì tôi đã phải làm là cung cấp phân phối khác để ngồi trước nhóm www S3 để có thể truy cập qua HTTPS. Đây là nơi mà mối quan tâm của tôi xuất hiện bởi vì, như tôi đã đề cập trước đó, mục đích chính của CloudFront là trở thành CDN.

Tôi không có ý nghĩa gì khi có CDN ngồi trước một url chỉ chuyển hướng đến một địa chỉ khác. Ngoài ra nó sẽ trả lời câu hỏi liệu tôi có bị tính phí gấp đôi cho mỗi yêu cầu truy cập vào tên miền phụ www vì nó đã đạt được phân phối CloudFront khác sau khi được chuyển hướng hay không. Điều này thật khó chịu vì tôi đang cố gắng làm một kiến ​​trúc "không máy chủ" bằng cách sử dụng Lambda và phải cung cấp một cá thể EC2 chỉ để viết lại url không phải là điều tôi muốn làm trừ khi đó là phương sách cuối cùng của tôi.

Giải pháp sẽ không quan trọng nếu Amazon cung cấp bất kỳ hình thức viết lại URL nào hoặc nếu CloudFront tự chuyển hướng, nhưng không ai trong số này tồn tại xa như tôi biết (hãy cho tôi biết nếu họ làm).

Tôi mới tham gia AWS nên tôi hy vọng một người có nhiều kinh nghiệm hơn có thể chỉ cho tôi đúng hướng.

Trả lời

7

Bạn đang suy nghĩ quá hẹp - không có gì sai với thiết lập này.

Các giải pháp sẽ là tầm thường nếu Amazon cung cấp bất kỳ hình thức URL viết lại

Họ làm - xô rỗng.

S3 hoàn toàn không hỗ trợ HTTPS.

Không dành cho nhóm lưu trữ trang web, không ... nhưng CloudFront thực hiện.

CloudFront không chỉ là CDN. Nó cũng là trình gỡ lỗi SSL, Host: trình ghi đè tiêu đề, trình sửa đổi đường dẫn, trình định vị địa lý, bộ lọc địa lý, cổng nội dung bảo mật, chuyển hướng http đến https, tùy biến trang lỗi, thay thế trang gốc, tường lửa ứng dụng web, bộ phun tiêu đề gốc, gzipper nội dung động, đa đường dẫn bộ định tuyến yêu cầu http, bộ nhận diện nền tảng người xem, DDoS mitigator, mục tiêu bí danh vùng apex ... vì vậy đừng quá treo lên "CDN" hoặc trên thực tế là bạn đang xếp chồng một dịch vụ trước một dịch vụ khác - CloudFront được thiết kế, phần lớn, để bổ sung cho S3. Họ từng chuyên về một số khía cạnh của lưu trữ và giao hàng.

Vì vậy, bạn đã làm đúng ... hầu hết, dù sao ... Tạo thùng, định cấu hình để lưu trữ trang web, đặt nó chuyển hướng tất cả yêu cầu đến một trang web khác (không phải www) và đặt Phân phối CloudFront ở phía trước - sử dụng URL điểm cuối trang web cho với nhóm trong CloudFront, không phải từ một trong danh sách thả xuống - được định cấu hình có TTL cao để CloudFront gửi số lượng yêu cầu tối thiểu đến S3 rồi đặt (miễn phí!) Chứng chỉ SSL từ Amazon Certificate Manager. Định tuyến tên miền thay thế HTTPS: đã được giải quyết. Không có máy chủ, không khắc phục sự cố và giá rẻ. chỉ phí là mức sử dụng - không có phí định kỳ nền như sẽ có với máy chủ.

Tín dụng bổ sung: định cấu hình phân phối CloudFront chuyển hướng cho tầng tỷ lệ rẻ nhất. Chuyển hướng từ các địa điểm đắt tiền hơn hoặc sẽ được chuyển đến một vị trí cạnh rẻ hơn hoặc - tùy chọn của CloudFront - có thể được phục vụ từ một vị trí có chi phí cao hơn nhưng được thanh toán ở mức giá thấp hơn. Lưu ý rằng hầu hết thời gian, CloudFront sẽ phân phối chuyển hướng từ S3 từ bộ nhớ cache của nó ... và khi bạn định cấu hình một nhóm để chuyển hướng tất cả các yêu cầu đến một tên máy chủ khác, chuyển hướng là một chuyển hướng vĩnh viễnvĩnh viễn - các trình duyệt được cho là bộ nhớ cache, chính chúng.

+0

Cảm ơn câu trả lời! Tôi về cơ bản đã làm mọi thứ bạn nói. Có một câu hỏi tôi có mặc dù. Đối với các yêu cầu được chuyển hướng, nó sẽ không đi 'CDN -> rỗng S3 -> CDN -> S3'? Đó là vấn đề chính của tôi. – m0meni

+0

Sau khi CloudFront lưu trữ chuyển hướng từ thùng trống, nó sẽ là CF> CF> S3 và nếu nội dung trang S3 được lưu trong bộ nhớ cache, chỉ cần CF> CF. Sau khi hạ cánh ban đầu chúng được chuyển hướng đến miền trống và các liên kết tiếp theo sẽ giữ chúng ở đó ... điều này sẽ không thực hiện bất kỳ khác biệt nào nếu CF có khả năng chuyển hướng đến miền khác nhau - những yêu cầu ban đầu đó vẫn sẽ nhấn CF hai lần , vì chuyển hướng đưa trình duyệt đến những gì trình duyệt sẽ * luôn * giả sử là một nơi khác, bởi vì tên máy chủ thay đổi ... cho dù đó thực sự là cùng một máy hay không. –

+0

Điều này có nghĩa là tôi sẽ bị tính phí hai lần cho mỗi yêu cầu được chuyển hướng không? Một lần cho mỗi yêu cầu CF? – m0meni

Các vấn đề liên quan