
Caddy Server - Web server mã nguồn mở, tiện dụng
Created: 4 days ago
Updated: 4 days ago
5 min read
4 views
Tags:
Đối với các bạn lập trình viên lâu năm, Apache hay Nginx luôn là một trong những Web server được lựa chọn hàng đầu. Nhất là Nginx, một web server được đánh giá tốt về tốc độ, tính linh hoạt và sự mạnh mẻ của nó. Tuy nhiên, với sự ra đời của một Open Source Web Server - Caddy Server, trở thành đối trọng của Nginx. Trong bài viết này, chúng ta sẽ đi sâu vào các tính năng, ưu điểm và cả nhược điểm của Caddy.
Caddy là gì ?
Caddy Server là một Open Source Web Server được xây dựng từ 2015. Với mã nguồn được phát triển từ Golang (Go), Caddy cung cấp những tính năng mạnh mẽ cho nhà phát triển web. Tính năng nổi bật nhất mà Open Source này có là tự động xác thực chứng chỉ HTTPS (Let’s Encrypt SSL), giúp loại bỏ sự phức tạp của việc quản lý chứng chỉ SSL/TLS theo cách thủ công. Cùng với có một thiết kế để chạy chỉ trong một lệnh (work out of the book), làm nó trở thành một lựa chọn hấp dẫn dành cho các nhà phát triển cần một hệ thổng quản lý dễ triển khai.
Các tính năng của Caddy:
- Tự động xác thực HTTPS
- Cấu hình từ file Caddyfile
- Hỗ trợ HTTP/1.1, HTTP/2, và HTTP/3
- Đa tính năng: web server, reverse proxy, load balancer
- Mở rộng nhanh chóng nhờ thiết kế theo dạng mô-đun (modular architecture)
- Và nhiều tính năng khác...
Cài đặt Caddy Server
Caddy Server có thể cài đặt thông qua nhiều cách theo hướng dẫn ở đây. Tuy nhiên mình thường sử dụng cài đặt trên Debian cho server và Docker cho môi trường phát triển.
Cài đặt trên Debian (Ubuntu)
Để cài đặt trên server, chúng ta sẽ chạy câu lệnh này trên shell hoặc bash của máy chủ:
bash
Và đây là kết quả sau khi cài đặt

Cài đặt bằng Docker
Chúng ta cũng có thể cài đặt bằng Docker (hoặc Docker Compose) để triển khai một hệ thống web bằng Caddy.
Đầu tiên chúng ta sẽ tạo một thư mục với cấu trúc file như sau:
bash
Với file Caddyfile - hay còn gọi là file cấu hình của Caddy, chúng ta có thể tạo mẫu một response.
bash
Còn với file docker-compose.yml, chúng ta sẽ cấu hình cho container này như sau:
bash
Sau khi hoàn tất, chúng ta sẽ dùng lệnh để chạy docker-compose:
bash

Đến khi hoàn tất việc cài đặt hệ thống, chúng ta có thể truy cập vào localhost để kiểm tra xem hệ thống đã khởi tạo ok chưa.

So sánh giữa Caddy & Nginx
Cú pháp cấu hình
Nginx: Cấu hình của Nginx cần người dùng hiểu được sâu vào cấu hình của nó. Kể cả một cấu hình reverse proxy đơn giản.
Example (Nginx reverse proxy):
nginx
Caddy: Với tệp cấu hình trực quan (Caddyfile), việc thiết lập reverse proxy hoặc một trang web tĩnh trở nên vô cùng đơn giản.
Example (Caddy reverse proxy):
vim
Automatic HTTPS
Nginx: Cần phải yêu cầu certificate được tạo hoặc gia hạn thủ công hoặc tích hợp một tool như Certbot
Example (Nginx HTTPS):
nginx
Caddy: Tự động xử lý HTTPS ngay khi cài đặt, bao gồm tạo và gia hạn chứng chỉ thông qua Let’s Encrypt.
Example (Caddy HTTPS):
vim
Custom TLS Example:
css
Hiệu năng
Dù cả hai đều có hiệu suất cao, nhưng kiến trúc hiện đại của Caddy mang lại cho nó một lợi thế trong các hệ sinh thái dựa trên Golang.

Dưới đây là một vài benchmark của một số tác giả đã thực hiện:
Kết luận
Caddy đại diện cho một bước tiến vượt bậc trong công nghệ máy chủ web. Sự đơn giản, thiết kế hiện đại và các tính năng tích hợp sẵn khiến nó trở thành một ứng cử viên sáng giá để thay thế Nginx trong nhiều trường hợp. Cho dù bạn đang lưu trữ một trang web tĩnh, chạy proxy ngược hay xây dựng kiến trúc microservice, Caddy đều đáng để cân nhắc. Việc tập trung vào việc giảm thiểu sự phức tạp cho nhà phát triển và tự động hóa các tác vụ tẻ nhạt khiến nó trở thành một bước ngoặt trong lĩnh vực máy chủ web.
Nguồn Tổng Hợp | howznguyen