Giới thiệu
Bạn đã bao giờ tự hỏi điều gì thực sự xảy ra khi bạn nhập một URL như www.google.com vào trình duyệt và nhấn Enter? Phía sau, một web server đóng vai trò trung tâm trong việc cung cấp trang web đó đến màn hình của bạn.
Trong bài viết này, chúng ta sẽ tìm hiểu cách hoạt động của một web server, bắt đầu từ những kiến thức cơ bản dễ hiểu cho đến những khái niệm mà ngay cả những nhà phát triển nâng cao cũng cần biết.
Dù bạn vừa mới bắt đầu với phát triển web hay là một kỹ sư backend dày dạn kinh nghiệm, bài viết này sẽ giúp bạn hiểu rõ về cỗ máy chính của web.
Web Server là gì?
Một web server là phần mềm (đôi khi là phần cứng) có khả năng:
- Lưu trữ, xử lý và cung cấp nội dung web (HTML, CSS, JS, hình ảnh, API)
- Sử dụng giao thức HTTP/HTTPS để giao tiếp với trình duyệt (khách hàng)
- Hoạt động liên tục để phục vụ nhiều yêu cầu từ người dùng trên toàn cầu
Các Web Server phổ biến:
- Apache (Mã nguồn mở, được sử dụng rộng rãi)
- Nginx (Nhẹ, nhanh, xử lý nhiều yêu cầu đồng thời)
- Microsoft IIS
- LiteSpeed
Cách một Web Server hoạt động - Các bước thực hiện
1. Yêu cầu từ người dùng (Client Side)
- Bạn nhập
https://example.comvào trình duyệt - Trình duyệt gửi một yêu cầu HTTP đến server lưu trữ miền đó
2. Giải quyết DNS
- Miền (
example.com) được ánh xạ tới một địa chỉ IP thông qua Hệ thống Tên Miền (DNS) - Ví dụ:
example.com → 192.168.1.1
3. Kết nối TCP/IP
- Trình duyệt thiết lập kết nối sử dụng TCP/IP với địa chỉ IP của server
- Nếu là HTTPS, xảy ra một bắt tay SSL/TLS để mã hóa
4. Xử lý yêu cầu trên Server
- Web server nhận yêu cầu
- Nó kiểm tra xem đó có phải là tệp tĩnh (HTML, CSS, hình ảnh) hay yêu cầu nội dung động (PHP, Node.js, Python, v.v.)
- Đối với nội dung động, server chuyển yêu cầu đến application server (ví dụ: Express.js, Django, Laravel)
5. Truy vấn cơ sở dữ liệu (nếu cần)
- Nếu yêu cầu liên quan đến dữ liệu người dùng, danh sách sản phẩm hoặc xác thực, server sẽ lấy dữ liệu từ một cơ sở dữ liệu (MySQL, MongoDB, PostgreSQL)
6. Gửi phản hồi trở lại
- Server gửi lại một phản hồi HTTP với:
- Mã trạng thái (200 OK, 404 Not Found, 500 Server Error)
- Dữ liệu yêu cầu (trang HTML, phản hồi JSON, v.v.)
7. Trình duyệt hiển thị nội dung
- Trình duyệt nhận phản hồi
- Phân tích HTML, tải CSS/JS, và cuối cùng hiển thị trang web cho người dùng
Các khái niệm từ Cơ bản đến Nâng cao
Các khái niệm cơ bản
- HTTP vs HTTPS → Chuyển giao dữ liệu an toàn
- Web tĩnh vs Web động → Tệp được tạo sẵn vs tạo ra tức thì
- Mô hình Client-Server → Trình duyệt (client) vs Server (backend)
Các khái niệm trung cấp
- Cân bằng tải → Phân bổ yêu cầu trên nhiều server.
- Caching → Lưu trữ tạm thời dữ liệu để có phản hồi nhanh hơn (CDN, bộ nhớ cache của trình duyệt)
- Quản lý phiên → Xử lý đăng nhập người dùng, cookie, token
Các khái niệm nâng cao
- Reverse Proxy → Nginx/HAProxy xử lý lưu lượng trước khi đến các server backend
- API Gateways → Quản lý microservices và yêu cầu
- Khả năng mở rộng → Mở rộng theo chiều ngang (thêm nhiều server) & chiều dọc (nâng cấp tài nguyên server)
- Bảo mật → Bảo vệ DDoS, WAF (Tường lửa Ứng dụng Web), mã hóa SSL/TLS
Sơ đồ quy trình ví dụ
[ Trình duyệt ] --> [ Tìm kiếm DNS ] --> [ Web Server ] --> [ App Server ] --> [ Cơ sở dữ liệu ]
^ |
|---------------------- Phản hồi trở lại ------------------|
Tại sao các nhà phát triển nên hiểu về Web Server
- Giúp khắc phục bottlenecks hiệu suất
- Cần thiết cho việc triển khai ứng dụng trên các nền tảng như AWS, Vercel hoặc DigitalOcean
- Cho phép viết ứng dụng mở rộng, bảo mật
- Xây dựng kiến thức về mạng, bảo mật và thiết kế hệ thống
Những điểm chính
- Một web server là xương sống của internet, cung cấp nội dung đến người dùng
- Từ việc nhập một URL đến việc thấy một trang web, nhiều lớp như DNS, TCP/IP, SSL và HTTP tham gia
- Người mới bắt đầu nên tập trung vào những kiến thức cơ bản về client-server, trong khi các nhà phát triển nâng cao nên khám phá cân bằng tải, caching và bảo mật.
Kết luận
Hiểu cách một web server hoạt động là không thể thiếu đối với mỗi nhà phát triển. Dù bạn đang xây dựng một trang web cá nhân hay một nền tảng SaaS quy mô lớn, việc biết rõ về các thành phần bên trong của server sẽ giúp bạn xây dựng các ứng dụng web nhanh hơn, an toàn hơn và có khả năng mở rộng tốt hơn.
Cảm ơn bạn đã đọc!
Nếu bạn thấy bài viết này hữu ích, đừng quên 💖 thích và 📝 nhận xét về bài viết.
👉 Theo dõi tôi để nhận thêm nhiều bài viết về Phát triển Web, MERN Stack và Thiết kế Hệ thống!