- 1 1. Giới thiệu
- 2 2. Cài đặt Nginx trên Ubuntu
- 3 3. Cấu hình Nginx cơ bản trên Ubuntu
- 4 4. Khởi động và quản lý Nginx
- 5 5. Cài đặt tường lửa Nginx và tăng cường bảo mật
- 6 6. Tối ưu hiệu năng Nginx và khắc phục sự cố
- 7 7. Tổng kết và các bước tiếp theo
1. Giới thiệu
Nhiều người dùng quan tâm đến việc sử dụng Nginx trên Ubuntu, nhưng người mới bắt đầu có thể không biết bắt đầu từ đâu. Bài viết này cung cấp giải thích dễ hiểu, từng bước—từ cài đặt Nginx trên Ubuntu đến cấu hình và quản lý nó—ngay cả khi bạn không có kinh nghiệm trước đó.
Nginx là gì?
Nginx (Engine-X) là một máy chủ HTTP hiệu suất cao và máy chủ proxy ngược. Do kiến trúc nhẹ và linh hoạt, nó được sử dụng rộng rãi trong các máy chủ web và ứng dụng trên toàn thế giới. Cấu trúc của nó đặc biệt phù hợp để xử lý môi trường lưu lượng cao.
Lợi ích của việc sử dụng Nginx trên Ubuntu
Ubuntu là một bản phân phối Linux phổ biến với khả năng tương thích tuyệt vời với Nginx. Vì Ubuntu sử dụng hệ thống quản lý gói APT, việc cài đặt và cập nhật dễ dàng, và bạn có thể mong đợi sự ổn định và bảo mật mạnh mẽ.
Sau khi đọc bài viết này, bạn sẽ hiểu:
- Cách cài đặt Nginx trên Ubuntu
- Quy trình cấu hình và quản lý cơ bản
- Kỹ thuật tối ưu hóa hiệu suất và khắc phục sự cố
Bây giờ, hãy bắt đầu.
2. Cài đặt Nginx trên Ubuntu
Để chạy Nginx trên Ubuntu, bạn phải cài đặt nó đúng cách. Phần này giải thích các bước cài đặt một cách rõ ràng và đơn giản.
Kiểm tra các gói cần thiết
Trước khi cài đặt Nginx, hãy đảm bảo hệ thống của bạn được cập nhật. Chạy các lệnh sau:
sudo apt update
sudo apt upgrade
Cài đặt Nginx
Để cài đặt Nginx, nhập lệnh sau:
sudo apt install nginx
Lệnh này tải xuống và cài đặt Nginx trực tiếp từ kho APT của Ubuntu.
Xác minh cài đặt
Chạy lệnh sau để kiểm tra xem Nginx đã được cài đặt đúng chưa:
sudo systemctl status nginx
Nếu trạng thái hiển thị active (running), việc cài đặt thành công.
Cấu hình tường lửa
Ubuntu bao gồm UFW (Uncomplicated Firewall), bạn có thể sử dụng để cho phép lưu lượng Nginx.
sudo ufw allow 'Nginx Full'
sudo ufw enable
Nginx giờ đây sẵn sàng giao tiếp qua cổng 80 (HTTP) và cổng 443 (HTTPS).
3. Cấu hình Nginx cơ bản trên Ubuntu
Chỉ cài đặt Nginx thôi là chưa đủ—bạn phải cấu hình nó đúng cách để sử dụng hiệu quả.
Vị trí và cấu trúc của các tệp cấu hình
Nginx sử dụng các tệp cấu hình sau:
- Tệp cấu hình chính:
/etc/nginx/nginx.conf - Các tệp cấu hình cụ thể cho trang: nằm trong thư mục
/etc/nginx/sites-available/
Thông thường, bạn tạo các tệp cấu hình máy chủ ảo trong thư mục sites-available và sau đó tạo liên kết tượng trưng trong thư mục sites-enabled để kích hoạt chúng.
Cấu hình máy chủ ảo
Máy chủ ảo cho phép một máy chủ duy nhất quản lý nhiều tên miền và dự án. Ví dụ sau cấu hình example.com:
sudo nano /etc/nginx/sites-available/example.com
Nhập cấu hình sau:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Lưu tệp, sau đó kích hoạt cấu hình:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Cấu hình SSL/TLS
Để kích hoạt giao tiếp an toàn, cấu hình chứng chỉ SSL/TLS. Bạn có thể lấy chứng chỉ miễn phí bằng Let’s Encrypt.
Đầu tiên, cài đặt certbot:
sudo apt install certbot python3-certbot-nginx
Sau đó cấp chứng chỉ và áp dụng cài đặt tự động:
sudo certbot --nginx -d example.com -d www.example.com
Đảm bảo tự động gia hạn chứng chỉ được kích hoạt để tránh hết hạn.
4. Khởi động và quản lý Nginx
Một khi Nginx được cài đặt và cấu hình, bạn cần học cách khởi động, dừng, tải lại và khắc phục sự cố. Phần này giải thích các lệnh quản trị thiết yếu.
Các lệnh Nginx cơ bản
Trên Ubuntu, sử dụng lệnh systemctl để quản lý Nginx:
- Khởi động Nginx
sudo systemctl start nginx
- Dừng Nginx
sudo systemctl stop nginx
- Khởi động lại Nginx Sử dụng khi có các thay đổi cấu hình lớn.
sudo systemctl restart nginx
- Tải lại Nginx Áp dụng các thay đổi cấu hình mà không cần khởi động lại.
sudo systemctl reload nginx
- Kiểm tra trạng thái Nginx
sudo systemctl status nginx
Kích hoạt khởi động tự động
Để khởi động Nginx tự động sau khi hệ thống khởi động lại:
- Bật tự động khởi động
sudo systemctl enable nginx
- Tắt tự động khởi động
sudo systemctl disable nginx
Kiểm tra nhật ký và khắc phục sự cố
Nếu Nginx không hoạt động như mong đợi, hãy kiểm tra nhật ký:
- Nhật ký lỗi
sudo tail -f /var/log/nginx/error.log
- Nhật ký truy cập
sudo tail -f /var/log/nginx/access.log
Các vấn đề thường gặp và giải pháp
- Nginx không khởi động được
- Nguyên nhân: Lỗi tệp cấu hình
- Giải pháp:
bash sudo nginx -tKiểm tra lỗi cú pháp và sửa chúng.
- Các thay đổi không được áp dụng
- Nguyên nhân: Nginx chưa được tải lại
- Giải pháp: Chạy
sudo systemctl reload nginxsau khi thay đổi.
- Cổng không mở
- Nguyên nhân: Cài đặt tường lửa
- Giải pháp:
bash sudo ufw allow 'Nginx Full'

5. Cài đặt tường lửa Nginx và tăng cường bảo mật
Bảo mật là yếu tố quan trọng khi vận hành Nginx. Phần này giải thích cách cấu hình UFW và tăng cường bảo mật cho Nginx.
Mở cổng với UFW
UFW được cài đặt mặc định trên Ubuntu. Để cho phép Nginx giao tiếp, mở các cổng cần thiết:
- Kiểm tra trạng thái UFW
sudo ufw status
- Áp dụng quy tắc Nginx
sudo ufw allow 'Nginx Full'
- Bật UFW
sudo ufw enable
Các biện pháp bảo mật bổ sung
- Vô hiệu hoá các phương thức HTTP không cần thiết
if ($request_method !~ ^(GET|POST|HEAD)$) { return 444; }
- Vô hiệu hoá danh sách thư mục
autoindex off;
- Tăng cường SSL/TLS
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers HIGH:!aNULL:!MD5;
6. Tối ưu hiệu năng Nginx và khắc phục sự cố
Nginx nổi tiếng với hiệu năng, nhưng việc tối ưu đúng cách có thể cải thiện hơn nữa. Phần này giải thích cách tối ưu tài nguyên và giải quyết các vấn đề thường gặp.
Tối ưu hiệu năng
1. Cấu hình quy trình worker
Chỉnh sửa /etc/nginx/nginx.conf và tối ưu số lượng quy trình worker:
worker_processes auto;
2. Tăng kết nối worker
worker_connections 1024;
3. Bật HTTP/2
listen 443 ssl http2;
sudo systemctl reload nginx
4. Bật nén
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5. Cấu hình bộ nhớ đệm
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
access_log off;
}
Các vấn đề thường gặp và giải pháp
1. Yêu cầu chậm khi tải cao
- Nguyên nhân: thiếu quy trình worker hoặc cài đặt kết nối
- Giải pháp: điều chỉnh tham số worker hoặc triển khai cân bằng tải
2. Lỗi 403 Forbidden
- Nguyên nhân: đường dẫn
rootkhông đúng hoặc quyền không phù hợp - Giải pháp:
- Xác minh chỉ thị
rootvà sửa quyền bằng cách: bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html
3. Hết thời gian chờ máy chủ
- Nguyên nhân: xử lý yêu cầu của client mất quá nhiều thời gian
- Giải pháp:
proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300;
4. Lỗi khi khởi động lại
- Nguyên nhân: lỗi cú pháp cấu hình
- Giải pháp:
sudo nginx -t
7. Tổng kết và các bước tiếp theo
Bài viết này giải thích cách cài đặt, cấu hình và quản lý Nginx trên Ubuntu. Hãy xem lại những gì bạn đã học và xác định các bước tiếp theo có thể thực hiện.
Đánh giá bài viết
1. Cài đặt Nginx trên Ubuntu
- Chuẩn bị các gói cần thiết và học cách cài đặt Nginx bằng APT
- Cấu hình tường lửa (UFW) để cho phép lưu lượng Nginx
2. Cấu hình Cơ bản
- Học vị trí tệp, thiết lập máy chủ ảo, và cấu hình SSL/TLS
3. Các Thao tác Quản lý
- Thành thạo các lệnh khởi động, dừng, khởi động lại, tải lại, và kiểm tra nhật ký
4. Tường lửa và Bảo mật
- Mở các cổng cần thiết bằng UFW và vô hiệu hóa các phương thức HTTP không cần thiết
5. Tối ưu Hóa Hiệu suất và Khắc phục Sự cố
- Tối ưu hóa quy trình làm việc, kích hoạt HTTP/2, cấu hình bộ đệm, và giải quyết các vấn đề phổ biến
Các Bước Tiếp Theo
Bây giờ bạn đã hiểu các bước cài đặt và cấu hình cơ bản cho Nginx trên Ubuntu, hãy xem xét tiến xa hơn:
- Học cấu hình nâng cao của Nginx
- Nghiên cứu các tính năng cân bằng tải và proxy ngược
- Thử các mô-đun bổ sung như mô-đun RTMP của Nginx
- Tăng cường bảo mật
- Xem xét triển khai Tường lửa Ứng dụng Web (WAF)
- Giới thiệu tự động hóa
- Sử dụng Ansible hoặc Docker để tự động hóa cấu hình và triển khai
- Sử dụng công cụ giám sát và tối ưu hóa
- Triển khai Prometheus hoặc Grafana để hình dung và giám sát hiệu suất
Suy nghĩ Cuối cùng
Nginx là một máy chủ web nhanh và linh hoạt có khả năng hỗ trợ nhiều trường hợp sử dụng khi được cấu hình đúng. Áp dụng những gì bạn đã học ở đây vào các dự án thực tế và tiếp tục khám phá các tính năng bổ sung qua tài liệu chính thức của Nginx và tài nguyên cộng đồng.
Tôi hy vọng hướng dẫn này giúp bạn quản lý máy chủ web hiệu quả hơn!



