AWS có cung cấp cách định tuyến lưu lượng HTTPS đến hai phiên bản EC2 khác nhau dựa trên đường dẫn thư mục không?


10

Tôi đã tự hỏi nếu sau đây là có thể với các dịch vụ AWS?

https://www.example.com/a/-> được phục vụ bởi Apache trên EC2 Instance A

https://www.example.com/b/-> được phục vụ bởi Apache trên EC2 Instance B

Để làm rõ, tôi không muốn các tệp trong một đường dẫn thư mục nằm trên cùng một phiên bản máy chủ như các tệp trong đường dẫn thư mục khác.

Tôi hiểu điều này có thể khả thi với một loại proxy nào đó, nhưng có một giải pháp dễ dàng hơn với một trong các dịch vụ AWS.

Bộ cân bằng tải EC2 dường như không cho phép chuyển đổi dựa trên đường dẫn thư mục. Tuyến 53 hoạt động ở cấp DNS, không có thông tin đường dẫn để trả về IP dựa trên đó.


Bộ cân bằng tải EC2 rất ngu ngốc đến nỗi nó sẽ không đọc Host:các tiêu đề và lọc lưu lượng truy cập không có thật. Có vẻ như họ sẽ không thêm bất kỳ tính năng nào như bạn yêu cầu nếu việc xem các tiêu đề là quá nhiều công việc đối với họ. Thương thay họ có những lựa chọn khác.
gà con

Câu trả lời:


29

Sử dụng Bộ cân bằng tải ứng dụng AWS , thực hiện định tuyến dựa trên đường dẫn . Liên kết thứ hai đó là một hướng dẫn làm thế nào để làm điều đó.

Nói tóm lại, bạn thiết lập ALB của mình như bình thường, sau đó làm theo các bước sau (được sao chép từ hướng dẫn AWS):

  • Trên tab Người nghe , sử dụng mũi tên để xem các quy tắc cho người nghe, sau đó chọn Thêm quy tắc . Chỉ định quy tắc như sau:

  • Đối với tên nhóm mục tiêu , chọn nhóm mục tiêu thứ hai mà bạn đã tạo.

  • Đối với mẫu Đường dẫn chỉ định mẫu chính xác sẽ được sử dụng cho định tuyến dựa trên đường dẫn (ví dụ: / img / *). Để biết thêm thông tin, xem Quy tắc người nghe.

  • Chọn Lưu .


Cảm ơn! Tôi đã kiểm tra Trình cân bằng tải ứng dụng EC2 ban đầu, đã đi qua trình hướng dẫn, nhưng chưa bao giờ thực sự tạo ra một. Trình hướng dẫn không cung cấp tùy chọn đường dẫn. Như hướng dẫn đã chỉ ra, người ta phải tạo ra nó trước và sau đó chỉnh sửa các quy tắc sau.
Joseph Shih

9

Ngoài câu trả lời tuyệt vời của Tim, bạn cũng có thể đạt được điều này với CloudFront .

Đầu tiên, tạo phân phối của bạn , thêm nguồn gốc cho EC2 Instance A và EC2 Instance B (cũng có thể là bộ cân bằng tải, máy chủ không AWS hoặc thậm chí xô S3).

Sau đó, thiết lập quy tắc hành vi bộ đệm để ánh xạ / a / * và / b / * về nguồn gốc thích hợp.

Việc sử dụng CloudFront cho mục đích này có hợp lý hay không sẽ tùy thuộc vào ứng dụng của bạn và cần CDN.


4
Điều này cũng có thể áp dụng nếu bạn muốn /a*/b*được xử lý bởi các dịch vụ khác nhau, các tài khoản khác nhau, các khu vực khác nhau hoặc thậm chí một đường dẫn được xử lý bởi một cái gì đó chạy trong AWS và các nơi khác. CloudFront có nhiều trường hợp sử dụng mà về mặt khái niệm không yêu cầu CDN.
Michael - sqlbot
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.