Cấu hình chuyển hướng HTTP sang HTTPS ở port khác 80,443 trên Nginx
Thông thường, chúng ta đều biết port tiêu chuẩn cho HTTP là 80 và HTTPS (HTTP + SSL) là 443. Khi cần người dùng truy cập website với giao thức HTTPS thì ta chỉ cần đơn giản là cấu hình điều hướng 80 sang 443 cho ServerName Domain rồi cấu hình SSL cho port 443 cho domain đó là xong. Trình duyệt sẽ xử lý điều hướng tự động theo cấu hình của bạn.
Nhưng sẽ có trường hợp, bạn muốn truy cập web ở một port khác như 8080. Ví dụ : http://nhacungcap.com:8080/
, lúc này bạn muốn cấu hình HTTPS cho port 8080 của bạn với Nginx (https://nhacungcap.com:8080/
), tất nhiên rất dễ cấu hình. Nhưng khi bạn truy cập bằng link scheme HTTP trên port 8080, thì sẽ gặp lỗi như sau :
400 Bad Request The plain HTTP request was sent to HTTPS port nginx
Lỗi này là do bạn đang sử dụng giao thức không phù hợp là HTTP để giao tiếp ở port đang chỉ hỗ trợ giao thức HTTPS. Thế làm sao để cấu hình chuyển hướng HTTP sang HTTPS trên một port ngoài chuẩn 80,443 với dịch vụ Nginx Web Server đây. Bài viết này sẽ hướng dẫn bạn làm chuyện đó.
Thao tác cấu hình chuyển hướng HTTP sang HTTPS trên port cụ thể
Bình thường theo cách truyền thống thì ta chuyển hướng từ HTTP (80) sang HTTPS (443) như thế này, trình duyệt tự biết hành vi xử lý theo tiêu chuẩn công nghệ chung :
server { listen 80; server_name nhacungcap.com; return 301 https://nhacungcap.com$request_uri; } server { listen 443 ssl; server_name nhacungcap.com; ... }
Nhưng giờ ta phải cấu hình để tự chuyển hướng HTTP sang HTTPS ở một port custom như (8080) thì sao ?
Nginx hỗ trợ một HTTP Status Code tuỳ biến, giúp người dùng tự chuyển hướng từ HTTP sang HTTPS tên là 497
. Bạn chỉ cần cấu hình SSL cho port mà bạn mong muốn hỗ trợ HTTPS, sau đó nếu Nginx kiểm tra thấy bạn đang sử dụng giao thức HTTP để giao tiếp qua port đó, thì Nginx sẽ phản hồi HTTP Status Code 497
để tự điều hướng sang địa chỉ scheme endpoint bạn mong muốn.
server { listen 8080 ssl; server_name nhacungcap.com; ... error_page 497 https://nhacungcap.com:8080$request_uri; ... }
Đơn giản vậy thôi. Giờ khi ai đó gõ http://nhacungcap.com:8080
sẽ được chuyển hướng sang scheme HTTPS https://nhacungcap.com:8080