Trong bài viết này mình chia sẻ với anh em một Web server dùng làm Reverse Proxy gọn nhẹ và hiệu suất cao đó là Caddy Server
1. Giới thiệu Caddy Server
Caddy Server là một web server mã nguồn mở được viết bằng ngôn ngữ Go. Nó nổi bật với cấu hình đơn giản và khả năng tự động cấp chứng chỉ HTTPS, giúp bảo mật kết nối dễ dàng hơn. Caddy cũng hỗ trợ HTTP/2 và HTTP/3, đi kèm với nhiều tính năng hiện đại như cân bằng tải và Reverse proxy. Được thiết kế để dễ sử dụng và hiệu suất cao, Caddy thường được chọn làm giải pháp thay thế cho Nginx và Apache trong nhiều dự án web.
Các tính năng của Caddy:
- Tùy biến cấu hình dễ dàng với Caddyfile
- Tùy biến cấu hình nâng cao với native JSON config
- Tự động xác thực HTTPS
- Đa tính năng: web server, reverse proxy, load balancer
- Production-ready
- Hỗ trợ HTTP/1.1, HTTP/2, and HTTP/3
- Dễ dàng mở rộng tính năng nhờ thiết kế modular architecture
- Hỗ trợ nhiều hệ điều hành, và không bị phụ thuộc dependencies
- Và còn nhiều tính năng khác chờ bạn khám phá
2. Cài đặt Caddy Server
Để đơn giản mình triển khai Caddy Server bằng Docker
Tạo file docker-compose.yml
mkdir ~/caddy
cd ~/caddy
nano compose.yml
version: '3.8'
services:
caddy:
container_name: caddy
image: caddy:alpine
restart: always
ports:
- 80:80
- 443:443
networks:
- reverse_proxy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
networks:
reverse_proxy:
external: true
Tạo file Caddyfile
với nội dung sau. Anh em lưu ý đổi lại subdomain.
nano Caddyfile
caddy.kienletv.com {
respond / "Hello World" 200
tls internal
}
Khởi chạy Caddy Server
docker network create reverse_proxy
docker compose up -d
Mở trình duyệt truy cập vào địa chỉ https://caddy.kienletv.com
, nếu thấy hiện ra dòng chữ Hello, world!
nghĩa là Caddy đã được cài đặt thành công.
3. Sử dụng Caddy làm Reverse Proxy
Tạo ứng dụng Uptime Kuma bằng docker-compose
như sau:
nano compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- ./data:/app/data
restart: unless-stopped
networks:
- reverse_proxy
networks:
reverse_proxy:
external: true
Khởi chạy Uptime Kuma
docker-compose up -d
Để cài đặt Caddy làm Reverse Proxy cho Uptime Kuma ở trên mình thêm vào file Caddyfile như sau:
kuma.kienletv.com {
reverse_proxy uptime-kuma:3001
}
Khởi tạo lại Caddy Server
docker-compose up -d --force-recreate
Mở trình duyệt truy cập vào địa chỉ https://kuma.kienletv.com
và xem kết quả
Tạo ứng dụng khác sử dụng caddy làm reverse Proxy
mkdir whoami
nano compose.yml
version: '3.7'
services:
whoami:
image: traefik/whoami
networks:
- reverse_proxy
networks:
reverse_proxy:
external: true
Thêm vào file Caddyfile như sau:
whoami.kienletv.com {
reverse_proxy whoami:80
}
Khởi chạy ứng dụng
docker-compose up -d
Khởi tạo lại Caddy
docker-compose up -d --force-recreate
Kiểm tra ứng dụng
4. Tổng kết
Như vậy, qua bài viết này mình chia sẻ với anh em cách xây dựng Caddy để làm Reverse Proxy. Ngoài ra anh em có thể tham khác nhiều cách nữa để xây dựng một Web Server Reverse Proxy trong các bài viết trước của tại đây.
5. Nguồn tham khảo
Một số nguồn tham khảo mình để link bên dưới anh em đọc thêm
Cảm ơn bác