Cài đặt tên miền và SSL cho EzyPlatform

Cập nhật lúc 1774946036000
Khi triển khai EzyPlatform ra môi trường thực tế, bạn thường cần làm 3 việc:
  • trỏ domain về máy chủ chạy hệ thống
  • cấu hình Nginx để reverse proxy vào ứng dụng
  • cấp chứng chỉ SSL để website hoạt động qua HTTPS
Trong EzyPlatform, bạn có thể thực hiện việc này theo hai cách:
  • cấu hình qua giao diện quản trị của EzySupport
  • cấu hình thủ công bằng cách SSH vào máy chủ
Hai cách này có thể dùng độc lập hoặc kết hợp với nhau. Giao diện quản trị giúp thao tác nhanh, còn cấu hình thủ công phù hợp khi team muốn kiểm soát hạ tầng trực tiếp trên server.

Điều kiện cần trước khi bắt đầu

Trước khi cấu hình domain và SSL, bạn nên chuẩn bị:
  • một máy chủ Linux có IP public
  • domain đã đăng ký
  • DNS đã trỏ A record hoặc AAAA record về đúng IP máy chủ
  • port 80443 đang mở trên firewall hoặc security group
  • EzyPlatform đang chạy ổn định ở cổng nội bộ
Lưu ý quan trọng: luồng cài SSL trong EzySupport dùng Certbot theo chế độ --nginx, vì vậy Nginx phải được cài đặt và cấu hình đúng trước khi cấp chứng chỉ.

EzyPlatform xử lý domain như thế nào

Theo cách triển khai hiện có trong source code, hệ thống hỗ trợ 2 nhóm domain:
  • domain chính cho khu adminweb
  • các domain hoặc subdomain bổ sung được quản lý trong phần Domain Settings
Ngoài việc định tuyến request theo host, EzyPlatform còn cho phép gán branding riêng cho từng domain, ví dụ:
  • siteName
  • siteTitle
  • siteIconUrl
  • siteLogoUrl
  • pageDescription
  • pageImageUrl
  • pageTitleSeparator
Điều này giúp một hệ thống có thể phục vụ nhiều domain với bộ nhận diện khác nhau.

Phần 1: Cấu hình qua giao diện EzySupport

Bạn sẽ cần cài đặt EzySupport cho EzyPlatform trước.

Bước 1: Trỏ DNS về máy chủ

Tại nhà cung cấp DNS, cấu hình các bản ghi trỏ về IP máy chủ.
Ví dụ:
admin.example.com   A      203.0.113.10
www.example.com     A      203.0.113.10
help.example.com    A      203.0.113.10
Nên đợi DNS cập nhật hoàn tất trước khi làm bước cấp SSL.

Bước 2: Cài Nginx trong EzySupport

Vào khu quản trị DevOps của EzySupport, mở:
  • Load Balancing > Nginx
Tại đây hệ thống hỗ trợ:
  • kiểm tra Nginx đã cài hay chưa
  • cài Nginx tự động trên Linux
  • kiểm tra cấu hình bằng nginx -t
  • reload Nginx
  • cấu hình thư mục Nginx, mặc định là /etc/nginx
Nếu máy chưa có Nginx, bấm Install.

Bước 3: Tạo cấu hình Nginx cho domain chính

Trong màn hình Load Balancing > Nginx, EzySupport hiển thị sẵn:
  • Admin configuration
  • Web configuration
Hệ thống lấy domain admin và web từ URL cấu hình hiện tại của hệ thống. Nếu file config chưa tồn tại, bạn có thể bấm Change để sinh cấu hình mẫu.
Template mặc định sẽ reverse proxy về cổng nội bộ của ứng dụng. Ví dụ:
server {
    server_name www.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }
}
Sau khi chỉnh xong, bấm Save.
Điểm cần lưu ý là khi lưu cấu hình, hệ thống sẽ tự kiểm tra cú pháp Nginx. Nếu cấu hình sai, file sẽ được rollback về trạng thái cũ.

Bước 4: Kiểm tra và reload Nginx

Sau khi lưu cấu hình, bấm:
  • Check để kiểm tra trạng thái Nginx
  • Reload để áp dụng cấu hình mới
Nên thực hiện bước này sau mỗi lần thay đổi cấu hình.

Bước 5: Thêm subdomain hoặc domain bổ sung

Trong phần Sub domain configuration, bấm Add để tạo domain mới.
Bạn có thể khai báo:
  • domainName
  • domainType
  • serviceName
  • siteName
  • siteTitle
  • siteIconUrl
  • siteLogoUrl
  • pageDescription
  • pageImageUrl
  • ipv4
  • ipv6
  • priority
  • status
Các thông tin này giúp EzyPlatform nhận diện domain và áp branding đúng theo host.
Nếu subdomain chưa có file cấu hình Nginx, hệ thống có thể sinh sẵn mẫu cấu hình subdomain để bạn chỉnh và lưu.

Bước 6: Cài Certbot

Vào:
  • Load Balancing > Certbot
Tại đây:
  • nếu Certbot chưa được cài, bấm Install
  • nhập Contact Email
  • bấm Save
Email này sẽ được dùng khi đăng ký chứng chỉ SSL.

Bước 7: Cấp SSL cho từng domain

Quay lại Load Balancing > Nginx, với từng domain bấm Set SSL.
Hệ thống sẽ chạy Certbot theo chế độ tích hợp trực tiếp với Nginx để:
  • cấp chứng chỉ SSL
  • cập nhật cấu hình Nginx
  • bật chuyển hướng HTTP sang HTTPS
Sau khi hoàn tất, bạn nên kiểm tra lại bằng trình duyệt.

Phần 2: Cấu hình thủ công trực tiếp trên máy chủ

Trong nhiều trường hợp, bạn có thể muốn cấu hình hoàn toàn bằng SSH thay vì dùng plugin quản trị. Cách này phù hợp khi:
  • môi trường production không cho thao tác DevOps qua giao diện web
  • team muốn quản lý file cấu hình Nginx trực tiếp
  • bạn đã có quy trình vận hành chuẩn trên server

Bước 1: SSH vào máy chủ

ssh root@your-server-ip
Hoặc dùng user có quyền sudo:
ssh deploy@your-server-ip

Bước 2: Cài Nginx

Trên Ubuntu hoặc Debian:
sudo apt update
sudo apt install -y nginx
Trên CentOS, AlmaLinux, Rocky Linux hoặc RHEL:
sudo yum install -y nginx
hoặc:
sudo dnf install -y nginx
Khởi động và bật tự chạy:
sudo systemctl enable nginx
sudo systemctl start nginx
Kiểm tra:
nginx -v
sudo systemctl status nginx

Bước 3: Tạo cấu hình reverse proxy

Giả sử:
  • web chạy ở cổng 8080
  • admin chạy ở cổng 8081
  • domain web là www.example.com
  • domain admin là admin.example.com
Tạo file cấu hình cho web:
sudo nano /etc/nginx/sites-enabled/www.example.com
Nội dung ví dụ:
server {
    listen 80;
    server_name www.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }

    location ~* .(css|js|woff|woff2|ttf|gif|jpg|jpeg|png|svg|webp|ico)$ {
        expires 1h;
        add_header Cache-Control "public, max-age=3600";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }
}
Tạo file cấu hình cho admin:
sudo nano /etc/nginx/sites-enabled/admin.example.com
Ví dụ:
server {
    listen 80;
    server_name admin.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8081;
    }
}
Nếu hệ thống của bạn dùng sites-available, có thể tạo file ở đó rồi symlink sang sites-enabled.

Bước 4: Kiểm tra và reload Nginx

sudo nginx -t
sudo systemctl reload nginx
Chỉ reload khi nginx -t báo hợp lệ.

Bước 5: Cài Certbot

Trên Ubuntu hoặc Debian:
sudo apt install -y certbot python3-certbot-nginx
Trên CentOS hoặc RHEL:
sudo yum install -y certbot python3-certbot-nginx
hoặc:
sudo dnf install -y certbot python3-certbot-nginx
Kiểm tra:
certbot --version

Bước 6: Cấp SSL cho domain

Ví dụ cho web:
sudo certbot --nginx -d www.example.com -m admin@example.com --agree-tos --no-eff-email --redirect --non-interactive
Ví dụ cho admin:
sudo certbot --nginx -d admin.example.com -m admin@example.com --agree-tos --no-eff-email --redirect --non-interactive
Sau bước này, Certbot sẽ tự chỉnh cấu hình Nginx để bật HTTPS và redirect từ HTTP sang HTTPS.

Bước 7: Kiểm tra sau khi cấp SSL

Kiểm tra trên trình duyệt:
  • http://www.example.com
  • https://www.example.com
  • http://admin.example.com
  • https://admin.example.com
Hoặc kiểm tra nhanh bằng dòng lệnh:
curl -I http://www.example.com
curl -I https://www.example.com

Kết hợp cấu hình máy chủ với EzySupport

Nếu bạn cấu hình Nginx và SSL hoàn toàn bằng SSH, bạn vẫn nên thêm domain vào EzySupport để hệ thống áp đúng branding và metadata theo host.
Nói ngắn gọn:
  • DNS, Nginx và SSL là cấu hình ở tầng hạ tầng
  • Domain Settings trong EzySupport là cấu hình ở tầng ứng dụng
Hai phần này bổ sung cho nhau, không thay thế nhau.

Các lỗi thường gặp

Một số lỗi phổ biến khi cài domain và SSL:
  • DNS chưa trỏ đúng IP máy chủ
  • port 80 hoặc 443 đang bị chặn
  • proxy_pass trỏ sai cổng ứng dụng
  • Nginx cấu hình sai cú pháp
  • Certbot chạy khi domain chưa truy cập được từ internet
  • máy chủ không phải Linux nên không dùng được luồng cài tự động từ plugin

Lưu ý vận hành

Có một vài điểm nên chú ý khi làm việc với EzySupport:
  • Sau khi sửa cấu hình Nginx, bạn nên kiểm tra và reload ngay.
  • Chỉ nên cấp SSL sau khi domain đã truy cập được qua HTTP.
  • Khi xóa domain trong phần quản trị, hệ thống có thể xóa luôn file cấu hình Nginx tương ứng.
  • Nếu bạn chỉnh Nginx trực tiếp trên server, nên tránh để thao tác trong plugin ghi đè ngoài ý muốn.

Mục lục