close

Web Server là gì? Cách hoạt động và các web server phổ biến

Tác giả: TinoHost Ngày đăng: 31/07/2023 Chuyên mục: Quản trị Server & Linux
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Web server (máy chủ web) là máy tính và phần mềm nhận yêu cầu từ trình duyệt qua giao thức HTTP hoặc HTTPS, rồi trả về nội dung website. Về phần cứng, web server là máy chủ lưu file website (HTML, CSS, JavaScript, ảnh) và luôn kết nối Internet. Về phần mềm, web server là chương trình như Nginx, Apache hay LiteSpeed, hiểu URL và HTTP để phục vụ các file đó.

Định nghĩa hai mặt này theo MDN Web Docs. Khi nói “cài web server”, người ta thường nói về phần mềm; khi nói “thuê web server”, thường là nói về máy chủ chạy website. Bài này giải thích web server hoạt động thế nào, các web server phổ biến, web server khác application server ra sao, và cách tự cài web server trên VPS.

  • Phần cứng: một máy chủ vật lý hoặc máy chủ ảo (VPS, cloud server) chạy 24/7, có IP công khai.
  • Phần mềm: tối thiểu là một HTTP server; website động cần thêm trình chạy mã (PHP, Node.js, Python) và database.
  • Không cần tự quản lý: nếu chỉ chạy website WordPress hoặc website giới thiệu, web hosting đã có sẵn web server được nhà cung cấp quản trị.

Web server hoạt động như thế nào?

Web server hoạt động theo mô hình client – server: trình duyệt (client) luôn là bên gửi yêu cầu HTTP, web server chỉ trả lời. Khi nhận yêu cầu, web server tìm file khớp với URL và gửi về; với trang động, web server nhờ ứng dụng phía sau dựng nội dung; không có gì khớp thì trả mã lỗi, hay gặp là 404.

Sơ đồ web server hoạt động: trình duyệt phân giải tên miền, gửi yêu cầu HTTP GET, web server tìm file tĩnh hoặc chuyển cho PHP và database, rồi trả phản hồi 200 OK hoặc 404 Not Found

Bạn có thể tự xem một lượt truy cập bằng hai lệnh có sẵn trên Linux, macOS và Windows 10/11: nslookup hỏi DNS, curl -I chỉ lấy phần đầu phản hồi của web server.

nslookup example.com
curl -I https://example.com/
  • Dòng đầu của curl -I là mã trạng thái, ví dụ HTTP/2 200. Gặp 301 hoặc 302 thì xem header location để biết trang được chuyển đi đâu.
  • Header server, nếu máy chủ không ẩn, cho biết phần mềm đang trả lời, ví dụ nginx hoặc LiteSpeed.
  • Một IP phục vụ được nhiều website vì web server phân biệt theo header Host. Vì vậy trỏ tên miền đúng IP vẫn chưa đủ nếu tên miền chưa được khai báo trong cấu hình web server.
  • Nhóm mã lỗi chỉ ra nơi cần tìm: 4xx (403, 404) thường do URL hoặc quyền đọc file; 5xx (500, 502, 504) đến từ máy chủ hoặc ứng dụng phía sau.

Khác biệt giữa HTTP và HTTPS có tại bài so sánh HTTP và HTTPS.

Web server tĩnh và web server động

Web tĩnh trả về đúng file đã nằm trên ổ đĩa, nên mọi người nhận cùng một nội dung. Web động dựng trang riêng cho từng lượt truy cập, ví dụ giỏ hàng của mỗi khách một khác, nên cần thêm trình chạy mã như PHP-FPM và cơ sở dữ liệu. Website WordPress, cửa hàng online là web động; landing page chỉ gồm HTML, CSS là web tĩnh.

Các web server phổ biến hiện nay

Các phần mềm web server phổ biến hiện nay gồm Nginx, Apache HTTP Server, LiteSpeed, Microsoft IIS và Caddy. Không có phần mềm nào tốt cho mọi trường hợp: Nginx mạnh ở reverse proxy và file tĩnh, Apache linh hoạt với .htaccess, LiteSpeed thay thế Apache trên hosting, IIS dành cho Windows, Caddy tự động cấp HTTPS.

Web serverGiấy phépThế mạnh (theo tài liệu chính thức)Phù hợp
NginxMã nguồn mở, BSD 2 điều khoảnHTTP web server, reverse proxy, content cache, cân bằng tải, proxy TCP/UDP và mailVPS, làm proxy trước ứng dụng Node.js, Python, container Docker
Apache HTTP ServerMã nguồn mở, Apache License 2.0Mở rộng bằng module nạp động, cấu hình theo thư mục bằng .htaccess, virtual hostHosting nhiều website, ứng dụng PHP cần .htaccess
LiteSpeed Web ServerThương mại (có bản miễn phí giới hạn); OpenLiteSpeed là dự án mã nguồn mởThay thế trực tiếp Apache: đọc cấu hình Apache và .htaccess; có LSCache, HTTP/3Shared hosting, WordPress dùng plugin LiteSpeed Cache
Microsoft IISĐi kèm Windows ServerKiến trúc module, tích hợp pipeline ASP.NET, HTTP.sys nhận yêu cầu ở kernelỨng dụng ASP.NET, hạ tầng Windows
CaddyMã nguồn mở, Apache License 2.0Web server đầu tiên bật HTTPS tự động theo mặc định: tự xin, gia hạn chứng chỉ và chuyển HTTP sang HTTPSDự án nhỏ, reverse proxy cần HTTPS nhanh
Nguồn: nginx.org, httpd.apache.org, litespeedtech.com, learn.microsoft.com, caddyserver.com; truy cập 20/10/2026. Bảng không xếp hạng.

Bài chuyên sâu: Nginx là gì, Apache là gì, và LiteSpeed là gì. Lighttpd, có trong bài cũ, vẫn là web server mã nguồn mở nhẹ nhưng ít gặp trên hosting phổ thông.

Web server khác application server như thế nào?

Web server nhận kết nối HTTP và phục vụ nội dung tĩnh, còn application server chạy mã nguồn của ứng dụng để tạo nội dung động. Trong thực tế, hai phần thường đi cùng nhau: Nginx đứng trước nhận yêu cầu và cấp HTTPS, rồi chuyển phần động cho PHP-FPM, Node.js, Gunicorn hay Tomcat xử lý.

Web serverApplication server
Việc chínhNhận yêu cầu HTTP/HTTPS, trả file tĩnh, chuyển tiếp yêu cầuChạy logic ứng dụng, truy vấn database, tạo trang động hoặc API
Ví dụNginx, Apache, LiteSpeed, Caddy, IISPHP-FPM, Node.js, Gunicorn (Python), Tomcat (Java)
Nơi cấp HTTPSThường ở đây (TLS termination)Thường nhận HTTP nội bộ từ web server
Lỗi thường gặp404 (không thấy file), 403 (không có quyền)500 (lỗi mã), 502/504 khi web server không nhận được phản hồi

Khi web server không nhận được phản hồi hợp lệ từ application server, trình duyệt thường thấy lỗi 502; xem cách xử lý lỗi 502 Bad Gateway trên Nginx. Chi tiết về phần ứng dụng có tại Application Server là gì. Khi web server chuyển tiếp yêu cầu cho máy chủ khác như vậy, nó đóng vai trò reverse proxy.

Cài web server trên VPS

Cài web server trên VPS gồm năm việc: chuẩn bị VPS Ubuntu LTS, cài phần mềm web server, mở cổng 80/443 trên tường lửa, trỏ tên miền về IP của VPS, rồi cài chứng chỉ SSL để chạy HTTPS. Với Nginx trên Ubuntu 24.04, các bước cơ bản như sau.

Nếu bạn chưa có máy chủ, đọc VPS là gì. Lộ trình đầy đủ từ lúc nhận VPS tới khi chạy website có trong bài cách sử dụng VPS.

# 1. Cập nhật và cài Nginx
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y
systemctl status nginx

# 2. Tường lửa: mở SSH TRƯỚC rồi mới bật
sudo ufw allow OpenSSH
sudo ufw allow "Nginx Full"   # cổng 80 và 443
sudo ufw enable

# 3. Kiểm tra cấu hình mỗi lần sửa, rồi nạp lại
sudo nginx -t
sudo systemctl reload nginx
  • Thư mục website mặc định: /var/www/html. Mỗi website nên có một file cấu hình riêng (server block) trong /etc/nginx/sites-available/, liên kết sang sites-enabled.
  • Trỏ tên miền: tạo bản ghi A (và AAAA nếu có IPv6) trỏ tên miền về IP của VPS, đợi DNS cập nhật rồi mới xin chứng chỉ.
  • Cài SSL: dùng Certbot theo hướng dẫn chính thức: sudo snap install --classic certbot, sudo ln -s /snap/bin/certbot /usr/local/bin/certbot, sudo certbot --nginx, rồi thử gia hạn bằng sudo certbot renew --dry-run. Hướng dẫn từng bước: cài SSL trên VPS.
  • Chạy website động: cài thêm PHP-FPM và MariaDB/MySQL (WordPress), hoặc chạy ứng dụng Node.js, Docker phía sau Nginx làm reverse proxy.

Bảo vệ web server

  • Cập nhật thường xuyên hệ điều hành, web server và mã nguồn website để vá lỗ hổng.
  • Chỉ mở cổng cần thiết: SSH, 80, 443. Không mở cổng database hay cổng quản trị ứng dụng ra Internet.
  • Đăng nhập SSH bằng key thay vì mật khẩu; tắt đăng nhập root bằng mật khẩu.
  • Bật HTTPS cho mọi trang và chuyển hướng HTTP sang HTTPS.
  • Theo dõi log truy cập và log lỗi (Nginx: /var/log/nginx/), sao lưu website và database ra ngoài máy chủ.

Danh sách kiểm tra đầy đủ: bảo mật VPS.

Khi nào không cần tự dựng web server?

Không cần tự dựng web server khi bạn chỉ chạy một website WordPress hoặc website giới thiệu, và không có ai quản trị Linux. Shared hosting hoặc WordPress hosting đã có web server, SSL, sao lưu được nhà cung cấp vận hành. Tự dựng web server trên máy tính ở nhà cũng không nên dùng cho website thật: máy phải bật liên tục, có IP ổn định và chịu được truy cập từ Internet.

Tại Tino, gói WordPress Hosting ghi dùng LiteSpeed Web Server, cPanel, SSL miễn phí từ Let’s Encrypt và sao lưu mỗi ngày (thông tin trang sản phẩm, kiểm tra 20/10/2026). Nếu cần toàn quyền cấu hình Nginx, Apache hay chạy Docker, chọn VPS NVMe có Full Root Access.

Câu hỏi thường gặp về web server

Web server và hosting khác nhau thế nào?

Web server là phần mềm (và máy chủ) phục vụ website qua HTTP. Hosting là dịch vụ cho thuê chỗ chạy website trên máy chủ đã cài sẵn web server, thường kèm bảng điều khiển, email, sao lưu. Khi thuê hosting, bạn dùng web server do nhà cung cấp quản trị; khi thuê VPS, bạn tự cài và quản trị web server.

Máy tính cá nhân có làm web server được không?

Được, về kỹ thuật. Bạn cài Nginx hoặc Apache rồi mở trình duyệt vào http://localhost để thử. Nhưng để phục vụ người dùng thật, máy cần bật 24/7, có IP công khai hoặc tên miền động, mở cổng trên router và tự lo bảo mật, nên ít phù hợp ngoài mục đích học tập.

Static web là gì?

Static web (web tĩnh) là website gồm các file HTML, CSS, JavaScript và ảnh có sẵn, web server gửi nguyên các file này cho trình duyệt mà không xử lý thêm. Web tĩnh nhanh, ít lỗ hổng, hợp cho trang giới thiệu, tài liệu; nhưng muốn có giỏ hàng, đăng nhập hay bình luận thì cần web động hoặc dịch vụ bên ngoài.

Nên chọn Nginx hay Apache?

Trên VPS mới, Nginx là lựa chọn phổ biến khi cần reverse proxy cho Node.js, Python hoặc Docker và phục vụ file tĩnh. Apache phù hợp khi mã nguồn dựa nhiều vào file .htaccess, ví dụ nhiều plugin WordPress cũ. Hai phần mềm cũng có thể chạy cùng nhau: Nginx đứng trước, Apache xử lý PHP phía sau.

Web server dùng cổng nào?

Mặc định HTTP dùng cổng 80, HTTPS dùng cổng 443. Khi chạy thử ứng dụng, lập trình viên hay dùng cổng khác như 8080 hoặc 3000; khi đưa lên mạng, nên để web server nhận ở 80/443 rồi chuyển tiếp vào cổng nội bộ của ứng dụng.

Nguồn tham khảo

Chia sẻ một chút thông tin về bạn. Những thông tin này có thể được công khai.

Xem thêm bài viết

Bài viết liên quan