Thủ thuật

Hướng dẫn cài đặt và cấu hình Nginx trên Ubuntu

Nginx là web server mã nguồn mở, xuất hiện từ năm 2004, đáp ứng nhu cầu web, reverse proxy, caching, cân bằng tải, streaming media và nhiều tính năng khác. Với hiệu suất và ổn định cao, Nginx ngày càng thay thế Apache trong vai trò web server chính.

Ngoài việc làm web server cho dịch vụ web (HTTP), Nginx còn chức năng làm reverse proxy cho email (IMAP, POP3, SMTP), và đồng thời làm reverse proxy cùng cân bằng tải cho kết nối TCP và UDP.

Yêu cầu

  • Hệ thống chạy Ubuntu 20.04 hoặc mới hơn
  • Người dùng có quyền sudo hoặc quyền root
  • Sử dụng command-line trên terminal
  • Đã cài phần mềm curl

Cài đặt Nginx

Trước khi cài phần mềm mới, đảm bảo cập nhật danh sách repository bằng lệnh:

sudo apt update

Để hệ thống hoàn thành cập nhật, sau đó cài đặt Nginx từ repositories, bạn có thể sử dụng lệnh:

sudo apt install nginx

Kiểm tra nginx đã cài hay chưa thì bạn chỉ cần sử dụng lệnh sau:

nginx -v

Thời điểm hiện tại của bài viết Nginx đang ở ver 1.25.3.

nginx version: nginx/1.25.3 (Ubuntu)

Điều chỉnh Firewall

Bạn cần phải cấu hình tường lửa để Nginx có thể đáp ứng dịch vụ qua internet. Sử dụng lệnh ufw theo hướng dẫn sau:

Liệt kê các cấu hình ứng dụng ufwbiết cách làm việc bằng cách gõ:

sudo ufw app list

Bạn sẽ nhận được một danh sách các hồ sơ ứng dụng:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Như được minh họa bằng keest quar, có ba cấu hình có sẵn cho Nginx:

  • Nginx Full : Cấu hình này mở cả cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa) và cổng 443 (lưu lượng truy cập được mã hóa TLS/SSL)
  • Nginx HTTP : Profile này chỉ mở cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa)
  • Nginx HTTPS : Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS/SSL)

Bạn nên bật cấu hình hạn chế nhất để vẫn cho phép lưu lượng truy cập bạn đã định cấu hình. Ngay bây giờ, chúng tôi sẽ chỉ cần cho phép lưu lượng truy cập trên cổng 80.

Bạn có thể lựa chọn cho phép truy cập phần mềm HTTP bằng cách sau:

sudo ufw allow 'Nginx HTTP'

Bạn có thể xác minh thay đổi bằng cách sau:

sudo ufw status

Đầu ra sẽ cho biết lưu lượng HTTP nào được phép:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Kiểm tra web server

Nếu mọi chuyện đều thuận lợi thì bước này sẽ là bước kiểm tra xem Web Server của bạn có chạy bình thường hay không. Chúng ta sẽ check bằng systemd để đảm bảo service đang chạy:

systemctl status nginx

Nếu phần Active: của bạn đang running như mình thì mọi thứ đang chạy rồi!

Output● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Để kiểm tra xem web server của bạn đã hoạt động chưa, mở trình duyệt và truy cập địa chỉ http://dia_chi_ip_server. Nếu thấy trang web “Welcome to nginx”, đó là dấu hiệu rằng web server đang hoạt động.

Quản lý dịch vụ Nginx

Bây giờ bạn đã thiết lập và chạy máy chủ web, hãy xem qua một số lệnh quản lý cơ bản:

  • Khởi động Nginx:
sudo systemctl start nginx
  • Dừng Nginx:
sudo systemctl stop nginx
  • Khởi động lại Nginx:
sudo systemctl restart nginx
  • Kiểm tra trạng thái hoạt động của Nginx:
sudo systemctl status nginx
  • Mở tự động Nginx khi khởi động hệ thống:
sudo systemctl enable nginx
  • Tắt tự động khởi động Nginx:
sudo systemctl disable nginx

Điều này sẽ giúp bạn quản lý và điều khiển máy chủ web Nginx của mình một cách hiệu quả.

Cấu hình server block (virtual host)

Để cấu hình một server block (virtual host) trong Nginx, bạn có thể thực hiện các bước sau:

  1. Tạo một thư mục cho website:
sudo mkdir /var/www/ten_mien_cua_ban
  1. Gán quyền truy cập thư mục cho người dùng Nginx:
sudo chown -R $USER:$USER /var/www/ten_mien_cua_ban
sudo chmod -R 755 /var/www/ten_mien_cua_ban
  1. Tạo một tệp index.html trong thư mục mới tạo và thêm nội dung mong muốn:
nano /var/www/ten_mien_cua_ban/index.html

Bên trong, thêm HTML mẫu sau:

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>
  1. Tạo một tệp cấu hình server block mới:
sudo nano /etc/nginx/sites-available/ten_mien_cua_ban

Ví dụ cấu hình server block:

server {
       listen 80;
       server_name ten_mien_cua_ban;

       root /var/www/ten_mien_cua_ban;
       index index.html;

       location / {
           try_files $uri $uri/ =404;
       }
}

Đảm bảo thay thế ten_mien_cua_ban bằng tên miền thực tế của bạn.

  1. Tạo symbolic link sites-enabled:

Tạo một symbolic link để liên kết file /etc/nginx/sites-available/ten_mien_cua_ban sang thư mục /etc/nginx/sites-enabled/. Nginx sẽ đọc các file cấu hình tại thư mục /etc/nginx/sites-enabled/ mỗi khi khởi động.

sudo ln -s /etc/nginx/sites-available/ten_mien_cua_ban /etc/nginx/sites-enabled/
  1. Kiểm tra cấu trúc cấu hình Nginx có lỗi không:
sudo nginx -t
  1. Khởi động lại Nginx để áp dụng thay đổi:
sudo systemctl reload nginx

Bây giờ, trang web của bạn đã được cấu hình và có thể truy cập thông qua địa chỉ IP hoặc tên miền của bạn. http://ten_mien_cua_ban

Các thư mục quan trọng trong Nginx

Hãy hiểu rõ về các thư mục và file cấu hình quan trọng của Nginx:

  1. Nội dung mã nguồn website:
  • /var/www/html/ – Thư mục này lưu trữ mã nguồn của website.
  1. Thư mục và file cấu hình của Nginx:
  • /etc/nginx/ – Thư mục chứa các file cấu hình chính của Nginx.
  • /etc/nginx/nginx.conf – File cấu hình chính của Nginx.
  • /etc/nginx/sites-available/ – Thư mục chứa các file cấu hình cho server block.
  • /etc/nginx/sites-enabled/ – Thư mục này chứa danh sách các server block đang được kích hoạt.
  1. File log của Nginx:
  • /var/log/nginx/access.log – Lưu trữ lịch sử các yêu cầu đến web server (có thể thay đổi cách lưu log).
  • /var/log/nginx/error.log – Chứa thông tin về lỗi từ Nginx.

Nginx thực sự là một web server mạnh mẽ và dễ sử dụng với sự linh hoạt cao. Nếu có bất kỳ câu hỏi nào hoặc cần thêm sự hỗ trợ, đừng ngần ngại đặt câu hỏi. Chúc bạn thành công trong việc quản lý và triển khai web server của mình!

Bài viết liên quan

Chat