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 webwww.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.
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
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. –
Đ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