Skip to content
Thuan Bui's Blog
Go back

Kết nối hai máy chủ Caddy để chạy ứng dụng web nội bộ qua HTTPS

Hiện tại, mình đang chuyển một số ứng dụng web từ VPS bên ngoài về LXC trong homelab ở nhà để tiện việc quản lý. Các ứng dụng web trong mạng nội bộ của mình đều được reverse proxy thông qua một máy chủ Caddy để quản lý truy cập từ internet.

Tuy nhiên, khi thiết lập reverse proxy cho Invoice Ninja, mình gặp phải tình huống là cấu hình cài đặt đã bao gồm sẵn 1 docker container chạy Caddy để làm reverse proxy cho ứng dụng, kết nối thông qua tên miền https://invoice.thuanbui.me

Máy chủ Caddy này sau khi đượ chuyển về homelab, sẽ nằm ở phía sau máy chủ Caddy chính, khiến việc cấu hình Reverse Proxy trở nên rắc rối hơn.

1. Mô hình kết nối

Mô hình kết nối từ Internet đến Invoice Ninja sẽ như bên dưới

[Internet] → [Caddy Chính] → [Caddy Phụ] → [Invoice Ninja]

Dưới đây là cách cấu hình kết nối Kết nối hai máy chủ Caddy để chạy ứng dụng web nội bộ qua HTTPS

2. Cấu hình Caddy chính

Chỉnh sửa lại Caddyfile trên máy chủ chính, bổ sung cấu hình cho tên miền dùng để truy cập Invoice Ninja

invoice.thuanbui.me {
reverse_proxy 192.168.1.120:80 {
header_up X-Forwarded-Proto https
}
}

Giải thích:

Sau đó, khởi động lại Caddy:

Terminal window
docker compose restart

3. Cấu hình Caddy phụ

Cấu hình ban đầu của Caddyfile như sau

invoice.thuanbui.me
root * /var/www/app/public
php_fastcgi dockerfiles-app-1:9000
encode zstd gzip
file_server browse
}

Mình phải sửa dòng invoice.thuanbui.me thành http://invoice.thuanbui.me, để Caddy phụ không tạo SSL nữa (có tạo cũng bị lỗi không xác thực được).

http://invoice.purna.vn {
root * /var/www/app/public
php_fastcgi dockerfiles-app-1:9000
encode zstd gzip
file_server browse
header {
Content-Security-Policy upgrade-insecure-requests
}
}

Giải thích:

Sau đó, khởi động lại

Terminal window
docker compose restart

5. Kiểm tra & Hoàn tất

Truy cập lại vào Invoice Ninja thông qua tên miền.

Nếu mọi thứ hoạt động đúng, bạn đã hoàn thành việc thiết lập hai Caddy instance hoạt động cùng nhau trong mạng nội bộ!


6. Lời kết

Trong bài viết này, mình đã hướng dẫn cách sử dụng hai máy chủ Caddy để quản lý ứng dụng web nội bộ với Reverse Proxy. Điều này giúp bạn dễ dàng:

Nếu bạn có thắc mắc, hãy để lại bình luận bên dưới nhé!


Share this post on:

Previous Post
Chia Sẻ Kinh Nghiệm: Stack WordPress tối ưu mình đang sử dụng
Next Post
Học tiếng Nhật – Ngày 731: Nhìn lại chặng đường 2 năm học tiếng Nhật