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ổng443
(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
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:
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
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
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/