Cách Cài Đặt, Cấu Hình và Tối Ưu Nginx trên Ubuntu: Hướng Dẫn Toàn Diện cho Người Mới Bắt Đầu

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:

  1. Khởi động Nginx
    sudo systemctl start nginx
    
  1. Dừng Nginx
    sudo systemctl stop nginx
    
  1. 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
    
  1. 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
    
  1. 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:

  1. Bật tự động khởi động
    sudo systemctl enable nginx
    
  1. 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ý:

  1. Nhật ký lỗi
    sudo tail -f /var/log/nginx/error.log
    
  1. 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

  1. 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 -t Kiểm tra lỗi cú pháp và sửa chúng.
  1. 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 nginx sau khi thay đổi.
  1. 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:

  1. Kiểm tra trạng thái UFW
    sudo ufw status
    
  1. Áp dụng quy tắc Nginx
    sudo ufw allow 'Nginx Full'
    
  1. Bật UFW
    sudo ufw enable
    

Các biện pháp bảo mật bổ sung

  1. 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;
    }
    
  1. Vô hiệu hoá danh sách thư mục
    autoindex off;
    
  1. 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 root không đúng hoặc quyền không phù hợp
  • Giải pháp:
  • Xác minh chỉ thị root và 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:

  1. 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
  1. Tăng cường bảo mật
  • Xem xét triển khai Tường lửa Ứng dụng Web (WAF)
  1. 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
  1. 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!

年収訴求