Làm cách nào để chuyển hướng HTTP sang HTTPS trên Trình cân bằng tải ứng dụng AWS?


12

Trang web của chúng tôi cần tuân thủ HIPAA vì vậy mọi thứ cần được mã hóa. Tôi không muốn khách hàng nhận được thông báo lỗi khi họ đặt " http : //mysite.com", vì vậy tôi cần hỗ trợ cả HTTP và HTTPS và chuyển hướng HTTP sang HTTPS. Tôi có đúng không

Tôi đã làm nó chính xác trên các máy chủ web. Vì vậy, nếu tôi kết nối trực tiếp với các máy chủ web, HTTP sẽ tự động được chuyển hướng đến HTTPS. Tất cả đều tốt.

Nhưng các máy chủ web đang ngồi đằng sau Bộ cân bằng tải ứng dụng AWS. Tôi không biết cách chuyển hướng HTTP sang HTTPS trên ELB. Vì vậy, trình duyệt máy khách vẫn có thể kết nối với ELB thông qua HTTP.

Làm cách nào để thiết lập HTTP => HTTPS trên Bộ cân bằng tải ứng dụng AWS?

Nói cách khác, tôi chắc chắn kết nối giữa ELB và máy chủ web là HTTPS, nhưng làm thế nào để đảm bảo kết nối giữa trình duyệt máy khách và ELB là HTTPS?


Bạn không làm điều đó trên LB. Bạn làm điều đó trong các trường hợp, dựa trên X-Forwarded-Prototiêu đề mà LB gửi.
ceejayoz

Tôi không phải là người làm máy chủ - Tôi là lập trình viên C #, vì vậy xin miễn cho tôi là người câm - Tôi đã sử dụng mô-đun viết lại URL để thiết lập chuyển hướng trên máy chủ Windows. Nó hoạt động nếu tôi kết nối trực tiếp với máy chủ. Nhưng nếu tôi kết nối với ELB, tôi vẫn có thể kết nối với HTTP. Tại sao?
ngốc nghếch

ALB có nghe trên 443 với Chứng chỉ SSL không? Để chắc chắn trong câu hỏi của bạn, bạn cũng muốn SSL giữa ALB và máy chủ?
strongjz

Câu trả lời:


-4

Bạn có thể thêm cấu hình được liệt kê bên dưới vào tệp .htaccess của bạn. Nhưng trước đó, hãy đảm bảo mod_rewrite được bật trên máy chủ và tệp .htaccess không bị từ chối.

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

Để được giải thích chi tiết vui lòng đi qua các tài liệu chính thức từ cuối aws. https://aws.amazon.com/premiumsupport/ledgeledge-center/redirect-http-https-elb/


7
Câu trả lời này dường như liên quan đến Máy chủ HTTP Apache
Paul Draper

2
OP hỏi cách cấu hình ELB để bạn giải thích cách định cấu hình Apache? Họ nói rõ ràng rằng họ đã cấu hình Apache để thực hiện chuyển hướng. Hãy xóa câu trả lời của bạn.
Cerin

11

Kể từ tháng 7 năm 2018 , điều này được hỗ trợ trên các bộ cân bằng tải ứng dụng.

  • Thêm / Chỉnh sửa trình HTTP:80nghe của bạn
  • Đặt hành động thành Redirect
  • giao thức: https
  • Hải cảng: 443
  • đặt danh sách thả xuống tiếp theo thành Original host, path, query
  • đặt danh sách thả xuống cuối cùng thành 301 - Permanently moved

Hình ảnh cài đặt cho trình nghe HTTP sang HTTPS trên bộ cân bằng tải ứng dụng AWS


1

Thông thường những gì xảy ra là ELB được đặt để nhận https (cổng 443) và chuyển tiếp đến thể hiện EC2 (mục tiêu cân bằng tải) trên http (cổng 80).

Máy chủ web phụ trợ chuyển hướng các yêu cầu này đến cổng 443 trên bộ cân bằng tải, gây ra một vòng chuyển hướng vô hạn (giữa bộ cân bằng tải và máy chủ web phụ trợ).

Một thông báo lỗi phổ biến là ERR_TOO_MANY_REDIRECTS.

Giải pháp là xem xét X-Forwarded-Proto, đây là giao thức mà bộ cân bằng tải nhìn thấy, khi quyết định chuyển hướng.

Đối với nginx, cấu hình sẽ như thế này:

server {
    listen   80;
    server_name    www.example.org;   
    if ($http_x_forwarded_proto = 'http') {
         return 301 https://$server_name$request_uri;   
    }
}

và cho apache .htaccess một cái gì đó như thế này:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

LƯU Ý: Mặc dù người ta có thể nghĩ rằng sẽ thuận tiện nếu điều này có thể được xử lý mà không cần cấu hình lại máy chủ web, kể từ mùa xuân 2018, không có cách nào giải quyết điều này bằng cách chỉ sử dụng ELB, tức là bạn phải định cấu hình máy chủ web của mình để thực hiện công việc này.

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.