Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

2. Đồng bộ cấu hình nginx S2 với S1

ICT

Đang ở S2 nhé.

Nếu bạn đang ở S2 và muốn đồng bộ cấu hình Nginx từ S1 sang S2 (cả hai đều dùng đường dẫn mặc định /etc/nginx), cách an toàn nhất là rsync one-way + kiểm tra cú pháp + reload. Dưới đây là quy trình chuẩn, ít rủi ro.


1) Trên S2: tạo backup nhanh trước khi sync

 
sudo mkdir -p /root/backup-nginx
sudo tar -C /etc -czf /root/backup-nginx/nginx-etc-$(date +%F-%H%M%S).tar.gz nginx

2) Đồng bộ /etc/nginx từ S1 → S2 bằng rsync (khuyến nghị)

Giả sử bạn SSH được từ S2 sang S1 qua user root (hoặc user có quyền sudo đọc /etc/nginx).
Thay S1_IP bằng IP/hostname của S1.

Option A (phổ biến): Sync phần cấu hình Nginx, không đụng chứng chỉ

sudo rsync -aHAX --delete --numeric-ids --info=progress2 -e "ssh -o StrictHostKeyChecking=accept-new" root@192.168.1.6:/etc/nginx/ /etc/nginx/

 

Lưu ý quan trọng:

  • --delete sẽ làm S2 giống hệt S1 (xóa file dư trên S2). Đây là điều bạn cần nếu muốn “đồng bộ thật”.

  • Lệnh này chỉ sync /etc/nginx. Nếu S1 có include trỏ sang nơi khác (ví dụ /etc/letsencrypt/..., /etc/nginx/snippets/...), bạn vẫn cần đảm bảo những phần đó tồn tại trên S2.


3) Nếu S1 đang dùng Let’s Encrypt, bạn phải xử lý chứng chỉ riêng

Nginx config thường include:

  • /etc/letsencrypt/live/...

  • /etc/letsencrypt/options-ssl-nginx.conf

  • /etc/letsencrypt/ssl-dhparams.pem

Bạn có 2 hướng:

Hướng 1 (khuyến nghị vận hành): Cài cert riêng trên S2 bằng certbot

  • S2 tự xin cert (hoặc dùng DNS challenge / Cloudflare API nếu NAT chưa trỏ).

  • Ưu điểm: đúng chuẩn, dễ bảo trì, tránh copy private key giữa máy.

Hướng 2 (nếu bạn muốn S2 “clone y hệt” S1 ngay): sync cả /etc/letsencrypt

 
sudo rsync -aHAX --delete --numeric-ids --info=progress2 -e "ssh -o StrictHostKeyChecking=accept-new" root@192.168.1.6:/etc/letsencrypt/ /etc/letsencrypt/

4) Kiểm tra cú pháp và reload Nginx trên S2

 
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl status nginx --no-pager -l

Nếu nginx -t báo lỗi, đừng reload; hãy xem file thiếu include/đường dẫn certificate.


5) Checklist các điểm hay “vỡ” khi đồng bộ

  1. Upstream/Proxy trỏ IP nội bộ: trên S2 có thể cần khác (ví dụ proxy_pass tới service chỉ có trên S1).

  2. Đường dẫn chứng chỉ: /etc/letsencrypt/... có thể thiếu.

  3. Modules/dynamic modules: nếu S1 có module mà S2 không có, nginx -t sẽ fail.

  4. User/permission: nếu cấu hình log, temp path, cache path khác nhau.