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.