- 1 1. Giới thiệu
- 2 2. Hướng dẫn cài đặt Nginx trên Ubuntu
- 3 3. Cấu hình Nginx cơ bản trên Ubuntu
- 4 4. Cách khởi động và quản lý Nginx
- 5 5. Cấu hình tường lửa Nginx và tăng cường bảo mật
- 6 6. Tối ưu hiệu suất và khắc phục sự cố Nginx
- 7 7. Tổng kết và các bước tiếp theo
1. Giới thiệu
Nhiều người muốn sử dụng Nginx trên Ubuntu nhưng không biết bắt đầu từ đâu nếu mới làm quen. Bài viết này sẽ hướng dẫn chi tiết từ cài đặt, cấu hình đến quản lý Nginx trên môi trường Ubuntu một cách dễ hiểu cho người mới bắt đầu.
Nginx là gì?
Nginx (phát âm là “engine-x”) được biết đến là một máy chủ HTTP hiệu suất cao và máy chủ proxy ngược. Với tính linh hoạt và nhẹ nhàng, Nginx đượ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 biệt, nó nổi bật với cấu trúc có khả năng chịu tải cao.
Lợi ích khi sử dụng Nginx trên Ubuntu
Ubuntu là một bản phân phối Linux phổ biến và có khả năng tương thích tốt với Nginx. Hệ thống quản lý gói (APT) giúp việc cài đặt và cập nhật dễ dàng, đồng thời đảm bảo tính ổn định và bảo mật.
Sau khi đọc bài viết này, bạn sẽ có thể hiểu được các nội dung sau:
- Cách cài đặt Nginx trên Ubuntu
- Các bước cấu hình và quản lý cơ bản
- Tối ưu hiệu suất và khắc phục sự cố
Bây giờ, chúng ta hãy bắt đầu vào công việc thực tế.
2. Hướng dẫn cài đặt Nginx trên Ubuntu
Để chạy Nginx trên Ubuntu, trước tiên bạn cần cài đặt nó đúng cách. Dưới đây là các bước cài đặt được giải thích một cách dễ hiểu.
Kiểm tra các gói cần thiết
Trước khi bắt đầu cài đặt, 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 sẽ tự động tải xuống và cài đặt Nginx từ kho lưu trữ APT của Ubuntu.
Xác nhận cài đặt
Để kiểm tra xem quá trình cài đặt đã hoàn tất đúng cách chưa, hãy kiểm tra trạng thái của Nginx bằng lệnh sau:
sudo systemctl status nginx
Nếu bạn thấy “active (running)” trong kết quả, quá trình cài đặt đã thành công.
Cấu hình tường lửa
Ubuntu được tích hợp UFW (Uncomplicated Firewall), bạn sẽ sử dụng nó để cho phép Nginx giao tiếp.
sudo ufw allow 'Nginx Full'
sudo ufw enable
Giờ đây, Nginx đã sẵn sàng hoạt động trên cổng 80 (HTTP) và 443 (HTTPS).

3. Cấu hình Nginx cơ bản trên Ubuntu
Chỉ cài đặt Nginx thôi là chưa đủ. Tiếp theo, chúng ta sẽ thực hiện các cấu hình cơ bản để sử dụng Nginx một cách hiệu quả.
Vị trí và cấu trúc cơ bản của tệp cấu hình
Các tệp cấu hình chính của Nginx nằm ở các vị trí sau:
- Tệp cấu hình chính:
/etc/nginx/nginx.conf
- Tệp cấu hình riêng cho từng trang: Trong thư mục
/etc/nginx/sites-available/
Về cơ bản, bạn sẽ tạo tệp cấu hình virtual host trong thư mục sites-available
và tạo một symbolic link đến thư mục sites-enabled
để sử dụng.
Cấu hình Virtual Host
Cấu hình virtual host cho phép bạn quản lý nhiều tên miền hoặc dự án trên một máy chủ. Ví dụ dưới đây sẽ cấu hình cho example.com
.
sudo nano /etc/nginx/sites-available/example.com
Nhập nội dung 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;
}
}
Sau khi lưu, kích hoạt cấu hình bằng các lệnh sau:
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
Để đảm bảo giao tiếp an toàn, bạn cần cấu hình chứng chỉ SSL/TLS. Bạn có thể nhận chứng chỉ miễn phí từ Let’s Encrypt.
Trước tiên, cài đặt certbot
:
sudo apt install certbot python3-certbot-nginx
Tiếp theo, chạy lệnh sau để lấy chứng chỉ SSL và tự động cấu hình:
sudo certbot --nginx -d example.com -d www.example.com
Hãy thiết lập tự động gia hạn để chứng chỉ không bị hết hạn.
4. Cách khởi động và quản lý Nginx
Sau khi cài đặt Nginx và thực hiện cấu hình cơ bản, bạn cần nắm vững các tác vụ quản lý như khởi động, dừng, và tải lại cấu hình khi có thay đổi. Phần này sẽ hướng dẫn các lệnh cơ bản cần thiết để quản lý Nginx và cách xử lý khi xảy ra sự cố.
Các lệnh Nginx cơ bản
Trên Ubuntu, bạn sử dụng lệnh systemctl
để quản lý trạng thái của Nginx. Dưới đây là các lệnh chính tương ứng với các thao tác:
- Khởi động Nginx
sudo systemctl start nginx
- Dừng Nginx
sudo systemctl stop nginx
- Khởi động lại Nginx
Khi có thay đổi lớn về cấu hình, đôi khi cần khởi động lại.
sudo systemctl restart nginx
- Tải lại Nginx
Khi thay đổi tệp cấu hình, bạn có thể áp dụng mà không cần khởi động lại bằng cách tải lại.
sudo systemctl reload nginx
- Kiểm tra trạng thái Nginx
Sử dụng lệnh sau để kiểm tra xem Nginx có đang chạy bình thường không:
sudo systemctl status nginx
Cài đặt tự động khởi động Nginx
Thiết lập Nginx tự động khởi động sẽ giúp bạn không cần phải khởi động thủ cô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
Nếu cần tắt:
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ý để xác định nguyên nhân.
- Kiểm tra nhật ký lỗi
Nhật ký lỗi được ghi ở đây:
sudo tail -f /var/log/nginx/error.log
- Kiểm tra nhật ký truy cập
Bạn có thể xem nội dung yêu cầu từ máy khách ở đây:
sudo tail -f /var/log/nginx/access.log
Các sự cố phổ biến và cách giải quyết
- Nginx không khởi động
- Nguyên nhân: Có thể có lỗi trong tệp cấu hình.
- Giải pháp:
bash sudo nginx -t
Kiểm tra lỗi trong tệp cấu hình bằng lệnh này và sửa lỗi.
- Thay đổi không được áp dụng
- Nguyên nhân: Chưa tải lại hoặc khởi động lại.
- Giải pháp:
Sau khi thay đổi cấu hình, chạysudo systemctl reload nginx
.
- Cổng chưa được mở
- Nguyên nhân: Cấu hình tường lửa.
- Giải pháp:
bash sudo ufw allow 'Nginx Full'
Bằng cách thực hiện các bước này, bạn có thể quản lý Nginx cơ bản một cách chắc chắn.

5. Cấu hình tường lửa Nginx và tăng cường bảo mật
Bảo mật là yếu tố cực kỳ quan trọng trong vận hành Nginx. Phần này sẽ giải thích cách cấu hình cổng bằng tường lửa (UFW) của Ubuntu và cách tăng cường bảo mật cho Nginx.
Mở cổng bằng UFW
UFW (Uncomplicated Firewall) là công cụ tường lửa được cài đặt sẵn trên Ubuntu. Để Nginx hoạt động đúng cách, bạn cần mở cổng 80 (HTTP) và cổng 443 (HTTPS).
- Kiểm tra trạng thái UFW hiện tại
sudo ufw status
- Áp dụng quy tắc cho Nginx
Mở các cổng cần thiết bằng lệnh sau:
sudo ufw allow 'Nginx Full'
- Bật UFW
Nếu tường lửa bị tắt, hãy bật nó:
sudo ufw enable
Cài đặt bổ sung để tăng cường bảo mật
- Vô hiệu hóa các phương thức HTTP không cần thiết
Để tăng cường bảo mật máy chủ, hãy vô hiệu hóa các phương thức HTTP không cần thiết. Thêm cấu hình sau vào tệp cấu hình Nginx:
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
- Vô hiệu hóa liệt kê thư mục
Để ngăn nội dung thư mục bị công khai, hãy thêm nội dung sau vào tệp cấu hình:
autoindex off;
- Tăng cường SSL/TLS
Để sử dụng các phương thức mã hóa mạnh mẽ, hãy thêm nội dung sau vào cấu hình SSL:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
6. Tối ưu hiệu suất và khắc phục sự cố Nginx
Nginx được sử dụng rộng rãi như một máy chủ web hiệu suất cao, nhưng bạn có thể nâng cao hiệu suất hơn nữa bằng cách điều chỉnh thích hợp. Phần này sẽ giải thích cách cải thiện hiệu suất Nginx và các giải pháp cho các vấn đề phổ biến.
Tối ưu hiệu suất
1. Cài đặt Worker Processes
Nginx sử dụng kiến trúc đa tiến trình (multi-process). Việc cài đặt số lượng worker processes phù hợp có thể tối ưu hóa hiệu suất.
Chỉnh sửa tệp cấu hình /etc/nginx/nginx.conf
:
worker_processes auto;
Khi đặt auto
, số lượng tiến trình tối ưu sẽ tự động được cấu hình dựa trên số lõi CPU của máy chủ.
2. Tăng số lượng kết nối trên mỗi Worker Process
Mặc định, số lượng kết nối trên mỗi worker process bị giới hạn. Tăng giá trị này có thể cải thiện khả năng xử lý khi tải cao.
Kiểm tra hoặc thêm dòng sau vào tệp cấu hình:
worker_connections 1024;
3. Kích hoạt HTTP/2
Kích hoạt HTTP/2 giúp tối ưu hóa giao tiếp với trình duyệt và cải thiện tốc độ tải trang web.
Chỉnh sửa tệp /etc/nginx/sites-available/example.com
và thay đổi chỉ thị listen
như sau:
listen 443 ssl http2;
Sau đó, tải lại Nginx:
sudo systemctl reload nginx
4. Cấu hình nén nội dung
Nén tệp trước khi gửi có thể giảm lưu lượng truyền tải và cải thiện tốc độ tải trang.
Thêm hoặc kích hoạt các dòng sau trong tệp cấu hình:
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 (Cache)
Thiết lập bộ nhớ đệm cho các tệp tĩnh có thể giảm số lượng yêu cầu đến cùng một tài nguyên.
Thêm nội dung sau vào khối server:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
access_log off;
}
Giải quyết các sự cố phổ biến
1. Xử lý yêu cầu chậm khi tải cao
- Nguyên nhân
Thường do worker processes hoặc số lượng kết nối được cấu hình không phù hợp. - Giải pháp
- Điều chỉnh worker processes và worker connections.
- Nếu cần, triển khai cân bằng tải (load balancer).
2. Lỗi 403 Forbidden hiển thị
- Nguyên nhân
- Đường dẫn của chỉ thị
root
trong tệp cấu hình Nginx bị sai. - Quyền truy cập thư mục hoặc tệp không phù hợp.
- Giải pháp
- Kiểm tra lại chỉ thị
root
trong tệp cấu hình và chỉ định đường dẫn chính xác. - Sửa quyền bằng các lệnh sau:
bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html
3. Máy chủ bị timeout
- Nguyên nhân
- Thời gian xử lý yêu cầu của máy khách quá dài.
- Giải pháp
Điều chỉnh thời gian timeout. Thêm hoặc thay đổi các dòng sau trong tệp cấu hình:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
4. Lỗi khi khởi động lại Nginx
- Nguyên nhân
Tệp cấu hình chứa lỗi. - Giải pháp
Kiểm tra cú pháp bằng lệnh sau trước khi lưu cấu hình:
sudo nginx -t
Thực hiện các bước này sẽ giúp bạn tối đa hóa hiệu suất của Nginx và xử lý các vấn đề thường gặp.

7. Tổng kết và các bước tiếp theo
Bài viết này đã giải thích chi tiết cách cài đặt, cấu hình và quản lý Nginx hiệu quả trên Ubuntu. Chúng ta sẽ cùng nhìn lại nội dung đã học trong từng phần và đưa ra lời khuyên cho các bước tiếp theo.
Tổng quan bài viết
1. Hướng dẫn cài đặt Nginx trên Ubuntu
- Chúng ta đã tìm hiểu cách chuẩn bị các gói cần thiết và cài đặt Nginx bằng APT.
- Đã cấu hình tường lửa (UFW) để cho phép Nginx giao tiếp.
2. Cấu hình cơ bản
- Đã hiểu vị trí và cấu trúc của tệp cấu hình, cũng như các bước cấu hình virtual host và SSL/TLS.
- Đã nắm vững cách cấu hình cụ thể thông qua các ví dụ mã thực tế.
3. Cách khởi động và quản lý
- Đã nắm được các thao tác cơ bản như khởi động, dừng, khởi động lại và tải lại.
- Đã học cách kiểm tra nhật ký hữu ích cho việc khắc phục sự cố.
4. Cấu hình tường lửa và tăng cường bảo mật
- Đã thực hiện các biện pháp tăng cường bảo mật như mở cổng 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 hiệu suất và khắc phục sự cố
- Đã giải thích các kỹ thuật tối ưu hóa cụ thể như tối ưu hóa worker processes, kích hoạt HTTP/2 và cài đặt bộ nhớ đệm.
- Đã học cách xử lý các vấn đề phổ biến để vận hành ổn định hơn.
Các bước tiếp theo
Với những kiến thức cơ bản về cài đặt và cấu hình đã được giới thiệu trong bài viết này, bạn đã nắm vững nền tảng để vận hành Nginx trên Ubuntu. Để nâng cao kỹ năng hơn nữa, hãy xem xét các bước tiếp theo sau:
- Tìm hiểu cấu hình Nginx nâng cao
- Tìm hiểu chi tiết về cân bằng tải (load balancing) và cấu hình reverse proxy để hướng tới vận hành nâng cao hơn.
- Thử thách các trường hợp sử dụng mới bằng cách tận dụng các module (ví dụ: module RTMP của Nginx).
- Tăng cường bảo mật hơn nữa
- Cân nhắc triển khai tường lửa ứng dụng web (WAF) hoặc tận dụng các module Nginx liên quan đến bảo mật.
- Tự động hóa
- Học cách tự động hóa việc triển khai và quản lý Nginx bằng Ansible hoặc Docker để cải thiện hiệu quả công việc.
- Tận dụng các công cụ giám sát và tối ưu hóa
- Triển khai các công cụ giám sát như Prometheus và Grafana để trực quan hóa hiệu suất Nginx theo thời gian thực.
Lời cuối
Nginx là một máy chủ web nhanh và linh hoạt, có thể đáp ứng nhiều trường hợp sử dụng nếu được vận hành đúng cách. Hãy tận dụng kiến thức đã học trong bài viết này và áp dụng vào các dự án thực tế của bạn.
Trong tương lai, khi có thêm câu hỏi hoặc nhu cầu mới, bạn nên tham khảo tài liệu chính thức của Nginx và các tài nguyên cộng đồng. Hy vọng bài viết này sẽ giúp ích cho việc vận hành máy chủ web của bạn!