Hướng Dẫn Cài Đặt Nginx Trên Ubuntu 18.04 Chi Tiết Nhất 2025

Hướng Dẫn Cài Đặt Nginx Trên Ubuntu 18.04

Nginx là một trong những máy chủ web phổ biến và được sử dụng rộng rãi trên toàn cầu, đồng thời là nền tảng lưu trữ của nhiều trang web có lượng truy cập khổng lồ.

So với Apache, Nginx sử dụng tài nguyên hiệu quả hơn trong nhiều trường hợp và có thể hoạt động như một máy chủ web hoặc một reverse proxy.

DataOnline sẽ hướng dẫn bạn tìm hiểu cách cài đặt Nginx trên máy chủ Ubuntu 18.04, đồng thời khám phá các tệp cấu hình và thư mục quan trọng của Nginx.

Bạn muốn triển khai Nginx trên Ubuntu 18.04 để tối ưu website? Trước tiên, hãy đảm bảo sở hữu một VPS chất lượng. Mua VPS tại DataOnline để nhận hiệu suất cao, ổn định, hỗ trợ 24/7, giúp bạn dễ dàng cài đặt và quản lý máy chủ web một cách chuyên nghiệp.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn cần có: Một người dùng không phải root với quyền sudo trên máy chủ. Đã cấu hình tường lửa cơ bản trên máy chủ.

Nếu bạn chưa thiết lập máy chủ, hãy tham khảo hướng dẫn cấu hình máy chủ ban đầu cho Ubuntu 18.04.

Sau khi đã có tài khoản, hãy đăng nhập với tư cách người dùng không phải root để bắt đầu.

Bước 1 – Cài đặt Nginx

Vì Nginx có sẵn trong kho lưu trữ mặc định của Ubuntu, bạn có thể cài đặt nó từ các kho này bằng hệ thống quản lý gói APT.

Vì đây có thể là lần đầu tiên bạn tương tác với hệ thống quản lý gói APT trong phiên làm việc này, hãy cập nhật chỉ mục gói cục bộ để đảm bảo bạn có quyền truy cập vào danh sách gói mới nhất. Sau đó, bạn có thể tiến hành cài đặt Nginx.

sudo apt update
sudo apt install nginx

Sau khi chấp nhận quy trình, apt sẽ tự động cài đặt Nginx và các gói phụ thuộc cần thiết.

Bước 2 – Cấu hình tường lửa

Trước khi kiểm tra Nginx, bạn cần điều chỉnh tường lửa để cho phép truy cập vào dịch vụ này.

Nginx tự động đăng ký cấu hình dịch vụ với ufw, giúp việc cấp quyền truy cập trở nên dễ dàng.

Hãy liệt kê các cấu hình ứng dụng có sẵn mà ufw nhận diện được:

sudo ufw app list

Kết quả đầu ra:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Danh sách trên cung cấp ba hồ sơ (profile) có sẵn cho Nginx:

  • Nginx Full: Mở cả cổng 80 (HTTP) và cổng 443 (HTTPS).

  • Nginx HTTP: Chỉ mở cổng 80 (HTTP, lưu lượng web không mã hóa).

  • Nginx HTTPS: Chỉ mở cổng 443 (HTTPS, lưu lượng web mã hóa TLS/SSL).

Bạn nên kích hoạt cấu hình tường lửa hạn chế nhất nhưng vẫn cho phép lưu lượng truy cập cần thiết mà bạn đã cấu hình.

Vì trong hướng dẫn này, bạn chưa thiết lập SSL cho máy chủ, nên bạn chỉ cần cho phép lưu lượng truy cập trên cổng 80.

sudo ufw allow 'Nginx HTTP'

Sau đó, xác minh thay đổi:

sudo ufw status

Kết quả mong đợi:

Output
Status: active

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

Lúc này, tường lửa đã được cấu hình đúng cách để cho phép lưu lượng HTTP đến máy chủ.

Bước 3 – Kiểm tra máy chủ Web

Khi quá trình cài đặt hoàn tất, Ubuntu 18.04 sẽ tự động khởi động Nginx. Máy chủ web của bạn lúc này nên đã hoạt động.

Hãy kiểm tra trạng thái dịch vụ bằng systemd init system để đảm bảo Nginx đang chạy:

systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
     Docs: man:nginx(8)
 Main PID: 9039 (nginx)
    Tasks: 2 (limit: 1151)
   CGroup: /system.slice/nginx.service
           ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
           └─9041 nginx: worker process

Đầu ra này cho thấy dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra là thực hiện một yêu cầu thực tế tới Nginx.

Bạn có thể truy cập trang mặc định của Nginx để xác nhận rằng phần mềm đang hoạt động đúng cách bằng cách nhập địa chỉ IP của máy chủ vào trình duyệt.

Nếu bạn chưa biết địa chỉ IP của máy chủ, bạn có thể kiểm tra bằng một số cách khác nhau.

Hãy thử nhập lệnh sau vào dòng lệnh của máy chủ.

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Bạn sẽ nhận được một vài dòng kết quả. Hãy thử nhập từng địa chỉ IP vào trình duyệt web để kiểm tra xem chúng có hoạt động hay không.

Một cách khác là chạy lệnh sau, lệnh này sẽ hiển thị địa chỉ IP công khai của bạn, được xác định từ một vị trí khác trên Internet:

curl -4 icanhazip.com

Khi bạn đã có địa chỉ IP của máy chủ, hãy nhập nó vào thanh địa chỉ của trình duyệt:

http://your_server_ip

Bạn sẽ thấy trang mặc định của Nginx xuất hiện:

Thiet ke chua co ten 8 1

Trang này được tích hợp sẵn trong Nginx để xác nhận rằng máy chủ đang chạy đúng cách.

Bước 4 – Quản lý tiến trình Nginx

Dưới đây là một số lệnh quản lý Nginx:

Dừng Nginx:

sudo systemctl stop nginx

Khởi động Nginx:

sudo systemctl start nginx

Khởi động lại Nginx:

sudo systemctl restart nginx

Tải lại Nginx mà không làm gián đoạn kết nối:

sudo systemctl reload nginx

Tắt chế độ tự động khởi động cùng hệ thống:

sudo systemctl disable nginx

Bật lại chế độ tự động khởi động cùng hệ thống:

sudo systemctl enable nginx

Nginx bây giờ sẽ tự động khởi động mỗi khi máy chủ được bật lại.

Bước 5 – Thiết lập Server Blocks

Khi sử dụng máy chủ web Nginx, bạn có thể sử dụng server blocks (tương tự như virtual hosts trong Apache) để định cấu hình chi tiết và lưu trữ nhiều tên miền trên cùng một máy chủ.

Trong hướng dẫn này, chúng ta sẽ thiết lập một miền có tên your_domain, nhưng bạn nên thay thế bằng tên miền thực tế của bạn.

Nginx trên Ubuntu 18.04 có một server block mặc định được cấu hình để phục vụ tài liệu từ thư mục /var/www/html. Điều này hoạt động tốt nếu bạn chỉ lưu trữ một trang web. Tuy nhiên, nếu bạn muốn lưu trữ nhiều trang web, thì việc sửa đổi trực tiếp /var/www/html không phải là giải pháp tối ưu.

Thay vào đó, chúng ta sẽ tạo một cấu trúc thư mục mới trong /var/www dành riêng cho trang web của bạn, đồng thời giữ nguyên /var/www/html làm thư mục mặc định nếu không có trang web nào khác khớp với yêu cầu của khách hàng.

Hãy tạo thư mục cho your_domain bằng lệnh sau. Tham số -p sẽ giúp tạo tự động các thư mục cha nếu chúng chưa tồn tại:

sudo mkdir -p /var/www/your_domain/html

Gán quyền sở hữu thư mục cho người dùng hiện tại:

sudo chown -R $USER:$USER /var/www/your_domain/html

Thiết lập quyền truy cập:

sudo chmod -R 755 /var/www/your_domain

Tạo một trang HTML mẫu:

nano /var/www/your_domain/html/index.html

Thêm nội dung sau:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success! The your_domain server block is working!</h1>
    </body>
</html>

Sau khi hoàn tất chỉnh sửa, hãy lưu và đóng tệp. Nếu bạn sử dụng nano, hãy nhấn CTRL + X, sau đó nhấn Y và ENTER để lưu lại. Để Nginx có thể phục vụ nội dung từ thư mục mới, bạn cần tạo một server block với các chỉ thị phù hợp.

Thay vì sửa đổi trực tiếp tệp cấu hình mặc định, hãy tạo một tệp cấu hình mới tại đường dẫn sudo nano /etc/nginx/sites-available/your_domain

Kích hoạt cấu hình bằng cách tạo liên kết tượng trưng:

sudo nano /etc/nginx/sites-available/your_domain

Thêm đoạn cấu hình sau, tương tự như cấu hình mặc định nhưng đã được cập nhật để phù hợp với thư mục mớitên miền của bạn:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain.com www.your_domain;

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

Lưu ý rằng chúng ta đã cập nhật đường dẫn gốc (root) trỏ đến thư mục mới và thiết lập server_name theo tên miền của bạn.

Sau khi hoàn tất, lưu và đóng tệp.

Tiếp theo, hãy kích hoạt cấu hình bằng cách tạo một liên kết tượng trưng (symbolic link) từ tệp cấu hình này đến thư mục sites-enabled, nơi Nginx sẽ đọc cấu hình trong quá trình khởi động:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Hiện tại, có hai server block đã được kích hoạt và cấu hình để xử lý yêu cầu dựa trên các chỉ thị listenserver_name (bạn có thể tìm hiểu thêm về cách Nginx xử lý các chỉ thị này tại đây):

  • your_domain: Xử lý các yêu cầu đến your_domainwww.your_domain.

  • default: Xử lý tất cả các yêu cầu đến cổng 80 nếu không khớp với bất kỳ server block nào khác.

Khi thêm nhiều server name, có thể gặp lỗi hash bucket memory problem. Để tránh lỗi này, bạn cần điều chỉnh một giá trị trong tệp /etc/nginx/nginx.conf.

Mở tệp cấu hình bằng lệnh:

sudo nano /etc/nginx/nginx.conf

Tìm dòng server_names_hash_bucket_size trong tệp /etc/nginx/nginx.conf, sau đó loại bỏ dấu# để bỏ ghi chú dòng này:

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Sau khi chỉnh sửa, lưu và đóng tệp.

Kiểm tra lỗi cú pháp trong cấu hình Nginx:

sudo nginx -t

Nếu không có lỗi nào xuất hiện, hãy khởi động lại Nginx để áp dụng thay đổi:

sudo systemctl restart nginx

Bây giờ, Nginx đã sẵn sàng phục vụ tên miền của bạn. Bạn có thể kiểm tra bằng cách truy cập: http://your_domain. Bạn sẽ thấy server block đầu tiên của Nginx hoạt động!

Thiet ke chua co ten 9 1

Bước 6 – Gia hạn chứng chỉ làm quen với các tệp và thư mục quan trọng của Nginx

Bây giờ bạn đã biết cách quản lý dịch vụ Nginx, hãy dành một chút thời gian để làm quen với các tệp và thư mục quan trọng của nó.

Nội dung trang web

/var/www/html – Đây là thư mục chứa nội dung trang web thực tế. Theo mặc định, nó chỉ chứa trang Nginx mặc định mà bạn đã thấy trước đó. Bạn có thể thay đổi thư mục này bằng cách chỉnh sửa các tệp cấu hình của Nginx.

Cấu hình máy chủ Nginx

/etc/nginx – Thư mục cấu hình chính của Nginx. Tất cả các tệp cấu hình của Nginx đều nằm trong thư mục này.

/etc/nginx/nginx.conf – Tệp cấu hình chính của Nginx. Bạn có thể sửa đổi tệp này để thay đổi cấu hình toàn cục của Nginx.

/etc/nginx/sites-available/ – Thư mục lưu trữ server block cho từng trang web.
Nginx không tự động sử dụng các tệp trong thư mục này trừ khi chúng được liên kết với sites-enabled.

/etc/nginx/sites-enabled/ – Thư mục chứa các server block đã được kích hoạt.
Các tệp trong thư mục này thường được tạo bằng cách liên kết từ sites-available.

/etc/nginx/snippets/ – Chứa các đoạn cấu hình nhỏ (snippets) có thể tái sử dụng trong nhiều nơi trong tệp cấu hình Nginx.

Nhật ký máy chủ Nginx

/var/log/nginx/access.log – Ghi lại mọi yêu cầu đến máy chủ web của bạn.

/var/log/nginx/error.log – Ghi lại mọi lỗi của Nginx.

Kết luận

Sau khi hoàn tất việc cài đặt máy chủ web Nginx trên Ubuntu 18.04, bạn sẽ có nền tảng vững chắc để triển khai các ứng dụng web và nội dung một cách hiệu quả. Với Nginx, bạn có thể mở rộng khả năng của mình bằng cách cấu hình máy chủ như một reverse proxy, thiết lập cân bằng tải, và tối ưu hóa việc xử lý các yêu cầu từ người dùng. Ngoài ra, Nginx cũng hỗ trợ triển khai HTTPS thông qua chứng chỉ SSL/TLS, bảo vệ dữ liệu của người dùng và cải thiện sự tin cậy của trang web. Với những công cụ và tính năng mạnh mẽ này, bạn sẽ có thể tạo ra một môi trường web an toàn, linh hoạt và hiệu suất cao, phục vụ tốt cho cả ứng dụng quy mô nhỏ lẫn lớn.

Sau khi cài đặt Nginx, bạn cần một môi trường mạnh mẽ để chạy ứng dụng. Thuê VPS giá rẻ tại DataOnline cung cấp cấu hình tối ưu, ổ cứng NVMe tốc độ cao, backup hàng ngày, giúp tiết kiệm chi phí mà vẫn đảm bảo hiệu suất cho website của bạn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *