Hướng Dẫn Triển Khai URL Tùy Chỉnh cho Oracle APEX trên OCI
Giới Thiệu
Trong bài viết này, chúng ta sẽ tìm hiểu cách triển khai một ứng dụng Oracle APEX trên Oracle Cloud Infrastructure (OCI) thông qua một URL tùy chỉnh. Việc sử dụng một URL dễ nhớ không chỉ giúp người dùng dễ dàng truy cập mà còn tạo ấn tượng chuyên nghiệp hơn. Chúng ta sẽ sử dụng Load Balancer để thực hiện điều này và đảm bảo rằng tất cả các bước được thực hiện một cách an toàn và hiệu quả.
Vấn Đề Cần Giải Quyết
Khi bạn tạo một ứng dụng Oracle APEX trên OCI sử dụng dịch vụ Autonomous Database, bạn sẽ nhận được một URL mặc định khá dài và khó nhớ như sau:
https://kfawejskfefk-rwesjdjnweidfjwe.adb.us-ashburn-1.oraclecloudapps.com/ords/r/apex/workspace-sign-in/administration-sign-in?session=32492384908239
Vậy làm thế nào để người dùng có thể truy cập ứng dụng APEX của bạn qua một URL tùy chỉnh như my-apex.farisdurrani.com?
Giải Pháp Chính: Sử Dụng Load Balancer
Có! Giải pháp nằm ở việc sử dụng một Load Balancer công cộng với một DNS trỏ tới địa chỉ IP công cộng của Load Balancer. Chúng ta sẽ thực hiện theo các bước hướng dẫn trên blog của Oracle và minh họa cách triển khai các bản ghi DNS, tạo chứng chỉ tự ký và cách truy cập URL riêng tư từ mạng OCI.
Bước 1: Tạo VCN
Truy cập vào OCI (cloud.oracle.com) và tạo một Virtual Cloud Network (VCN) với khả năng kết nối Internet. Sử dụng VCN Wizard là cách dễ nhất để thực hiện. Điều này sẽ tạo ra một subnet công cộng và một subnet riêng để sử dụng.
Bước 2: Tạo Load Balancer Công Cộng
Lưu lượng Internet cần phải đi qua Load Balancer (LB) công cộng trước khi đến ứng dụng APEX của bạn.
LB không chỉ cung cấp địa chỉ IP công cộng mà còn giúp cân bằng tải lưu lượng qua nhiều phiên bản và bảo mật lưu lượng khỏi các cuộc tấn công Layer 7 bằng cách sử dụng Web Application Firewall nếu cần thiết (không nằm trong phạm vi này).
Các bước thực hiện:
- Chọn truy cập công cộng.
- Chọn subnet công cộng.
- Để mặc định các máy chủ backend.
- Chỉnh sửa chính sách kiểm tra tình trạng:
- Giao thức: HTTP
- Cổng: 443
- Mã trạng thái: 302
- URI:
/
- Chỉnh sửa listener để sử dụng HTTP không SSL trên cổng 80.
- Để lại các thiết lập khác như mặc định và tạo Load Balancer.
Bây giờ, bạn đã có một Load Balancer công cộng với listener không dùng HTTPS. Chúng ta sẽ sửa chữa điều này sớm thôi.
Bước 3: Tạo Nhóm Bảo Mật Mạng Mới
Cần tạo hai Nhóm Bảo Mật Mạng (NSG) mới - một cho Load Balancer và một cho Autonomous Database để cho phép Internet truy cập vào Load Balancer, mà từ đó truy cập vào ADB.
Bạn cũng có thể chọn sửa đổi các danh sách bảo mật thay vì tạo NSG mới.
NSG cho Load Balancer
Tạo một NSG đơn giản để cho phép truy cập từ mọi nơi trên Internet tới cổng 443.
NSG cho ADB
Tạo một NSG đơn giản để cho phép truy cập từ dải CIDR của subnet công cộng (10.0.0.0/24 trong trường hợp của tôi) tới cổng 443.
Bước 4: Tạo Cơ Sở Dữ Liệu APEX Tự Động
Tạo một cơ sở dữ liệu APEX tự động mới trong OCI và chọn tùy chọn APEX làm Loại Khối Tải.
Bạn có thể nâng cấp loại khối tải thành cơ sở dữ liệu Xử Lý Giao Dịch mà không làm ảnh hưởng đến phiên bản APEX.
Chúng ta sẽ sử dụng phiên bản 23ai và dung lượng lưu trữ tối thiểu là 20 GB để tiết kiệm chi phí.
Lưu ý rằng cần chọn Chỉ truy cập qua điểm cuối riêng như loại truy cập mạng để có địa chỉ IP riêng để sử dụng.
Thêm NSG đã tạo cho cơ sở dữ liệu ADB. Trên trang ADB, dưới tab Thông tin Cơ Sở Dữ Liệu Tự Động, vào Mạng > Nhóm Bảo Mật Mạng. Nhấn Chỉnh sửa và thêm NSG cho ADB.
Bước 5: Thêm Địa Chỉ IP vào Load Balancer
Thêm địa chỉ IP riêng vào Load Balancer mà chúng ta đã tạo. Quay lại trang chi tiết của Load Balancer, vào tab Backend sets và nhấp vào backend duy nhất.
Chọn Thêm backend và nhập địa chỉ IP riêng của cơ sở dữ liệu (10.0.1.67 trong trường hợp của tôi) và cổng 443. Nhấn Thêm.
Chờ cho backend hoàn tất cập nhật và sau đó chờ một hoặc hai phút cho tình trạng sức khỏe backend chuyển sang Ok. Điều này xác nhận backend có thể kết nối với cơ sở dữ liệu của chúng ta.
Khắc phục sự cố: Nếu điều này không thành công, kiểm tra chính sách kiểm tra sức khỏe của backend set và cài đặt NSG.
Bước 6: Thêm NSG vào Load Balancer
Tiếp theo, thêm NSG mà chúng ta đã tạo cho Load Balancer để cho phép Internet kết nối với Load Balancer.
Trên trang LB, dưới Chi tiết > Thông tin Load Balancer > Nhóm Bảo Mật Mạng, nhấp Chỉnh sửa. Thêm NSG mà chúng ta đã tạo cho Load Balancer.
Bước 7: Tạo Chứng Chỉ SSL Tự Ký
Tiếp theo, chúng ta sẽ tạo một chứng chỉ SSL tự ký để thêm vào Load Balancer và sau đó chỉnh sửa listener để trở thành một listener HTTPS.
Sử dụng lệnh sau để tạo một chứng chỉ tự ký tạm thời:
openssl req -x509 -nodes -newkey rsa:2048 -keyout private.key -out certificate.crt -days 7
Bạn có thể bỏ qua (nhấn Enter) trên tất cả các tùy chọn để để mặc định.
Điều này sẽ tạo một chứng chỉ SSL tự ký tạm thời có hiệu lực trong 7 ngày dưới dạng hai tệp: certificate.crt và private.key.
Trên trang Load Balancer, vào tab Chứng chỉ và mã hóa và dưới Chứng chỉ quản lý bởi Load Balancer, nhấp Thêm chứng chỉ.
Tải lên các tệp sau vào các trường sau:
- Chứng chỉ SSL:
certificate.crt - Chứng chỉ CA:
certificate.crt - Khóa riêng:
private.key
Để lại mật khẩu khóa riêng trống. Đặt tên và nhấn Thêm chứng chỉ.
Bước 8: Chỉnh Sửa Listener thành HTTPS
Trên trang Load Balancer, vào tab Listeners và Chỉnh sửa listener duy nhất.
Cập nhật các trường sau:
- Giao thức: HTTPS
- Cổng: 443
- Sử dụng SSL: Có
- Tài nguyên chứng chỉ: Chứng chỉ quản lý bởi Load Balancer
- Tên chứng chỉ: tên chứng chỉ bạn đã tạo
Để lại các thiết lập khác như mặc định. Nhấn Lưu thay đổi.
Bây giờ, bạn có thể truy cập địa chỉ IP (https://129.153.150.95 cho tôi, hãy đảm bảo thêm https) và truy cập phiên bản APEX thông qua Load Balancer. Lưu ý rằng có thể có cảnh báo do việc sử dụng chứng chỉ SSL tự ký.
Bước 9: Thêm vào Bản Ghi DNS
Cuối cùng, chúng ta sẽ thêm địa chỉ IP công cộng của Load Balancer vào các bản ghi DNS của chúng ta dưới dạng bản ghi A để có được một URL tùy chỉnh. Tôi sử dụng miền riêng của mình trong CloudFlare, vậy nên tôi sẽ thêm vào đây.
Và voilà! Tôi có thể truy cập https://my-apex.farisdurrani.com và truy cập phiên bản APEX.
Nâng Cao: DNS Riêng và Load Balancer
Nếu bạn muốn thiết lập một vùng DNS riêng mà chỉ mạng nội bộ có thể truy cập Load Balancer thông qua một bản ghi DNS riêng, bạn có thể sử dụng Load Balancer Riêng và Vùng DNS Riêng của OCI.
Tạo một Load Balancer riêng trong cùng một subnet công cộng (Load Balancer phải nằm trong một subnet khác với subnet ADB). Thêm NSG, backend và listener thích hợp. Load Balancer sẽ chỉ có địa chỉ IP riêng, hãy sao chép địa chỉ IP đó.
Truy cập Mạng > Quản lý DNS > Các vùng riêng và tạo một vùng riêng mới (tôi chọn my-apex-instance.com). Thêm địa chỉ IP dưới dạng bản ghi A cho vùng. Tôi chọn miền www.my-apex-instance.com.
Mở một phiên Cloud Shell, thay đổi Mạng sang subnet công cộng và chạy curl -k https://www.my-apex-instance.com để xác minh kết nối đến phiên bản APEX. Lưu ý rằng chúng ta cần thêm cờ không an toàn -k vì chúng ta đang sử dụng chứng chỉ tự ký.
Thực Hành Tốt Nhất
- Luôn sử dụng chứng chỉ SSL đáng tin cậy: Mặc dù chứng chỉ tự ký có thể hoạt động, nhưng tốt nhất là bạn nên có chứng chỉ từ một cơ quan cấp chứng chỉ uy tín cho sản phẩm thực tế của mình.
- Kiểm tra định kỳ trạng thái sức khỏe của Load Balancer: Đảm bảo rằng Load Balancer của bạn luôn hoạt động và có thể xử lý lưu lượng truy cập.
Cách Khắc Phục Thường Gặp
- Không thể truy cập APEX qua URL tùy chỉnh: Kiểm tra lại các bản ghi DNS và đảm bảo chúng đã được cập nhật.
- Chứng chỉ SSL không đáng tin cậy: Đảm bảo bạn đã cài đặt chứng chỉ từ một cơ quan cấp chứng chỉ đáng tin cậy.
Lời Kết
Triển khai URL tùy chỉnh cho ứng dụng Oracle APEX trên OCI không chỉ giúp cải thiện trải nghiệm người dùng mà còn tăng tính chuyên nghiệp của ứng dụng của bạn. Hy vọng rằng hướng dẫn này đã giúp bạn dễ dàng thực hiện điều đó. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại câu hỏi trong phần bình luận bên dưới!
Câu Hỏi Thường Gặp (FAQ)
1. Tại sao tôi cần sử dụng Load Balancer?
Load Balancer giúp cân bằng tải lưu lượng và bảo mật ứng dụng của bạn khỏi các cuộc tấn công.
2. Có phải tôi luôn cần một chứng chỉ SSL không?
Có, sử dụng chứng chỉ SSL giúp bảo mật dữ liệu của bạn khi truyền qua Internet.
Tài Liệu Tham Khảo
Tuyên Bố An Toàn
Thông tin được cung cấp trong bài viết này chỉ nhằm mục đích thông tin và không thể được sử dụng như một phần của bất kỳ thỏa thuận hợp đồng nào.