Học nginx trong 20 ngày

Module 0: Chuẩn bị (Ngày 1)

  • Giới thiệu về NGINX:

    • Lịch sử và kiến trúc của NGINX.

    • Các phiên bản NGINX (Open Source, Plus, Unit).

    • So sánh NGINX với Apache, HAProxy.

    • Các ứng dụng phổ biến của NGINX.

  • Cài đặt môi trường:

    • Cài đặt NGINX Open Source trên hệ điều hành (Ubuntu/CentOS/macOS).

    • Cài đặt Docker và tạo container NGINX.

  • Bài tập:

    • Cài đặt NGINX trên máy ảo hoặc môi trường đám mây.

    • Khám phá cấu trúc thư mục và các file cấu hình chính của NGINX.

    • Hiển thị trang "Welcome to NGINX" mặc định.

Module 1: NGINX Fundamentals (Ngày 2-3)

  • Cấu hình cơ bản:

    • Các khối lệnh chính (events, http, server, location).

    • Chỉ thị listen, server_name, root, index.

    • Các biến số NGINX.

    • Xử lý file tĩnh (HTML, CSS, JavaScript, images).

    • Thiết lập virtual host.

  • HTTPS/SSL/TLS:

    • Tạo và cài đặt chứng chỉ SSL (Let's Encrypt).

    • Cấu hình HTTPS cho website.

    • Tối ưu hóa bảo mật SSL (HSTS, ciphers).

  • Bài tập:

    • Tạo một website đơn giản với nhiều virtual host.

    • Cấu hình chuyển hướng HTTP sang HTTPS.

    • Cài đặt chứng chỉ SSL miễn phí và kiểm tra điểm SSL của website.

Module 2: Load Balancing (Ngày 4-5)

  • Các thuật toán cân bằng tải:

    • Round Robin, Least Connections, IP Hash, Weighted.

    • Sticky sessions (IP hash, cookie).

    • Cân bằng tải dựa trên trọng số.

  • Kiểm tra tình trạng (Health Checks):

    • Active Health Checks (TCP, HTTP).

    • Passive Health Checks.

    • Cấu hình thời gian chờ và số lần thử lại.

  • Bài tập:

    • Cài đặt hệ thống cân bằng tải cho 2 hoặc nhiều máy chủ web.

    • Cấu hình sticky sessions để duy trì phiên làm việc.

    • Thực hiện kiểm tra tình trạng và loại bỏ máy chủ lỗi khỏi nhóm.

Module 3: Traffic Management (Ngày 6-7)

  • Rewrite Module:

    • Tạo các quy tắc rewrite (regex).

    • Chuyển hướng URL (301, 302).

    • Thay đổi nội dung response.

  • GeoIP Module:

    • Cài đặt cơ sở dữ liệu GeoIP.

    • Chặn hoặc chuyển hướng truy cập dựa trên quốc gia.

  • Limit Request Module:

    • Giới hạn tốc độ truy cập (rate limiting).

    • Ngăn chặn tấn công DDoS (connection limiting).

  • Bài tập:

    • Tạo quy tắc rewrite để chuyển hướng các URL cũ sang mới.

    • Chặn truy cập từ các quốc gia cụ thể.

    • Giới hạn tốc độ truy cập vào một API để bảo vệ tài nguyên.

Module 4: Content Caching (Ngày 8-9)

  • Proxy Cache:

    • Cấu hình các vùng nhớ cache (zone).

    • Thiết lập thời gian sống (TTL) cho các nội dung.

    • Các phương pháp lưu trữ cache (proxy_cache_key).

  • Microcaching:

    • Lưu trữ cache các nội dung nhỏ trong thời gian ngắn.

    • Tăng tốc độ phản hồi cho các yêu cầu thường xuyên.

  • Bài tập:

    • Cài đặt proxy cache để tăng tốc độ website.

    • Cấu hình microcaching cho các nội dung động.

    • Sử dụng các công cụ để kiểm tra hiệu quả của cache.

Module 5: Security (Ngày 10-11)

  • HTTP Basic Authentication:

    • Bảo vệ các tài nguyên bằng mật khẩu.

    • Tích hợp với các hệ thống xác thực khác (LDAP, Active Directory).

  • Web Application Firewall (WAF):

    • ModSecurity hoặc NGINX App Protect.

    • Cấu hình các quy tắc WAF để ngăn chặn tấn công.

    • Giám sát và phân tích log WAF.

  • SSL/TLS Security:

    • Tối ưu hóa cấu hình SSL/TLS (ciphers, protocols).

    • Chặn các cuộc tấn công SSL/TLS (POODLE, BEAST).

    • Sử dụng OCSP Stapling để xác minh chứng chỉ.

  • Bài tập:

    • Bảo vệ một thư mục bằng mật khẩu.

    • Cài đặt và cấu hình WAF để bảo vệ ứng dụng web.

    • Tối ưu hóa cấu hình SSL/TLS và kiểm tra điểm số bảo mật.

Module 6: NGINX Plus (Ngày 12-13)

  • Các tính năng nâng cao:

    • Live Activity Monitoring.

    • Session Persistence.

    • Active Health Checks nâng cao.

    • Key-Value Store.

  • API:

    • Sử dụng NGINX Plus API để quản lý và giám sát cấu hình.
  • Module NGINX Plus khác:

    • NGINX JavaScript.

    • HLS & DASH.

  • Bài tập:

    • Sử dụng NGINX Plus để giám sát tình trạng hệ thống.

    • Cấu hình Session Persistence với sticky cookie.

    • Viết một đoạn script JavaScript đơn giản để tùy chỉnh response.

Module 7: Advanced Topics (Ngày 14-15)

  • FastCGI/uWSGI:

    • Kết nối NGINX với các ứng dụng Python (Django, Flask) hoặc PHP.
  • Gzip Compression:

    • Nén nội dung để giảm băng thông và tăng tốc độ tải trang.
  • HTTP/2:

    • Cấu hình HTTP/2 để cải thiện hiệu suất.
  • WebSocket:

    • Hỗ trợ giao tiếp hai chiều thời gian thực.
  • Bài tập:

    • Cài đặt và cấu hình NGINX để làm việc với ứng dụng Django.

    • Kích hoạt nén Gzip và kiểm tra kết quả.

    • Cấu hình hỗ trợ WebSocket cho ứng dụng chat.

Module 8: Monitoring & Logging (Ngày 16)

  • Log Format:

    • Tùy chỉnh định dạng log.

    • Sử dụng log để gỡ lỗi và phân tích.

  • NGINX Amplify:

    • Giám sát hiệu suất và tình trạng NGINX.
  • ELK Stack (Elasticsearch, Logstash, Kibana):

    • Thu thập, lưu trữ và trực quan hóa log NGINX.
  • Bài tập:

    • Tạo một định dạng log tùy chỉnh.

    • Cài đặt NGINX Amplify và theo dõi hiệu suất.

    • Thiết lập ELK Stack để phân tích log.

Module 9: Troubleshooting & Performance Tuning (Ngày 17-18)

  • Debugging:

    • Sử dụng error log để tìm và sửa lỗi.

    • Các công cụ gỡ lỗi (strace, gdb).

  • Performance Tuning:

    • Tối ưu hóa worker processes và connections.

    • Cấu hình bộ đệm và timeouts.

    • Sử dụng Linux kernel tuning.

  • Bài tập:

    • Tìm và sửa lỗi cấu hình NGINX.

    • Tối ưu hóa NGINX để xử lý lưu lượng truy cập cao.

    • Sử dụng các công cụ để kiểm tra hiệu năng của NGINX.

Module 10: Containerization & Orchestration (Ngày 19-20)

  • Docker:

    • Xây dựng và triển khai NGINX trong container Docker.
  • Kubernetes:

    • Sử dụng NGINX Ingress Controller trong Kubernetes.

    • Quản lý và mở rộng NGINX trong môi trường Kubernetes.

  • Bài tập:

    • Xây dựng một image Docker chứa NGINX và ứng dụng web.

    • Triển khai NGINX Ingress Controller trong cụm Kubernetes.

    • Tạo một Kubernetes Deployment để quản lý các pod NGINX.

Lưu ý:

  • Thực hành là chìa khóa để thành thạo NGINX. Đừng quên làm các bài tập và tự mình khám phá thêm.