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 ufw
biế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:
- Tạo một thư mục cho website:
sudo mkdir /var/www/ten_mien_cua_ban
- 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
- 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>
- 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.
- 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/
- Kiểm tra cấu trúc cấu hình Nginx có lỗi không:
sudo nginx -t
- 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:
- Nội dung mã nguồn website:
/var/www/html/
– Thư mục này lưu trữ mã nguồn của website.
- 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.
- 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!