Cài đặt tên miền và SSL cho EzyPlatform
Cập nhật lúc 1774946036000Khi 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 recordhoặcAAAA recordvề đúng IP máy chủ - port
80và443đ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
adminvàweb - 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
80hoặc443đang bị chặn -
proxy_passtrỏ 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.