Giới thiệu
Nginx là một web server mã nguồn mở được thiết kế để đáp ứng nhu cầu đa dạng, bao gồm cung cấp dịch vụ web, reverse proxy, caching, cân bằng tải, và media streaming, cùng với nhiều tính năng khác. Nó được tối ưu hóa để đạt được hiệu suất và độ ổn định tối đa. Ra mắt vào năm 2004, Nginx nhanh chóng trở thành một lựa chọn phổ biến và thậm chí thay thế web server Apache nhờ vào những ưu điểm xuất sắc của mình.
Không chỉ giới hạn trong việc phục vụ dịch vụ web (HTTP), Nginx còn chơi một vai trò quan trọng như reverse proxy cho email (IMAP, POP3, SMTP), đồng thời làm reverse proxy và cân bằng tải cho các giao thức TCP và UDP.
Hướng dẫn dưới đây sẽ giúp bạn cài đặt Nginx trên hệ điều hành CentOS 7.
Yêu cầu
- Hệ thống chạy CentOS 7
- Người dùng có quyền sudo hoặc quyền root
- Sử dụng command-line trên terminal
Bước 1: Cài đặt Nginx
- Để cài Nginx trên CentOS, chúng ta sẽ cần thêm
EPEL repository
giúp tạo, duy trì và quản lý các gói bổ sung.
sudo yum install epel-release -y
- Bây giờ thì ta có thể cài Nginx và server của bạn. Thực thi lệnh sau để cài đặt Nginx:
sudo yum install nginx
_
- Khởi động nginx bằng lệnh sau:
bash (non-root)sudo yum install nginx
Bước 2: Đ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. Thông thường CentOS 7 sẽ mặc định chặn truy cập vào port 80 và 443, điều này sẽ trực tiếp chặn các traffic của Nginx. Để cho phép các traffic HTTP và HTTPS ta thực thi lần lượt các lệnh sau:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Sau mỗi lệnh đều có thông báo ” Success
” trả về.
Bước 3: 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!
Kết quả
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-12-14 05:56:20 PST; 4min 27s ago
Docs: man:nginx(8)
Main PID: 2308 (nginx)
Tasks: 3 (limit: 2260)
Memory: 3.6M
CGroup: /system.slice/nginx.service
├─2308 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─2309 nginx: worker process
└─2310 nginx: worker process
Tuy nhiên, cách thiết thực nhất chính là mở trình duyệt, truy cập vào địa chỉ http://dia_chi_ip_server
Nếu trang web Welcome to Nginx hiện ra, nghĩa là web server của bạn đang hoạt động.
Bước 4: Quản lý dịch vụ Nginx
Bởi vì Nginx được quản lý bằng systemd
cho nên muốn điều chỉnh bạn phải sử dụng công cụ systemctl
. Bây giờ chúng ta sẽ đi qua các lệnh quản lý cơ bản:
- Khởi động Web Server
sudo systemctl start nginx
- Dừng Web Server
sudo systemctl stop nginx
- Restart Web Server
sudo systemctl restart nginx
- Reload Web Server mà không mất kết nối: Thường được sử dụng trong trường hợp bạn thay đổi cấu hình và muốn Nginx cập nhật cấu hình vừa thay đổi.
sudo systemctl reload nginx
- Bật khởi động cùng hệ thống: Thao tác này sẽ giúp Nginx tự khởi động cùng hệ thống sau khi bạn khởi động lại máy chủ.
sudo systemctl enable nginx
- Tắt khởi động cùng hệ thống
sudo systemctl disable nginx
- Kiểm tra tình trạng của web server
sudo systemctl status nginx
Bước 5: Cấu hình server block (virtual host)
Server block trong Nginx có chức năng tương đương với Virtualhost trong Apache. Server block cho phép bạn định cấu hình và triển khai nhiều trang web với các tên miền khác nhau trên một máy chủ Nginx.
Trong các thao tác dưới đây mình sẽ sử dụng tên miền your_domain.com
để tạo nên một website mới.
- Tạo thư mực
/var/www/your_domain.com/html
để chứa mã nguồn website.
sudo mkdir -p /var/www/your_domain.com/html
- Trao quyền và chủ sở hữu cho thư mục.
sudo chown –R $USER:$USER /var/www/your_domain.com sudo chmod –R 755 /var/www
- Tạo một file
index.html
tại/var/www/your_domain.com/html/
chứa nội dung sau:
/var/www/your_domain.com/index.html
<html>
<head>
<title>Server cua toi</title>
</head>
<body>
<h1>Xin chao the gioi</h1>
</body>
</html>
- Ta tạo một file config cho website
your_domain.com
sudo nano /etc/nginx/conf.d/your_domain.com.conf
Và dán nội dung dưới đây vào:
Lưu ý: Bạn cần thay đổi your_ domain thành tên miền của bạn.
/etc/nginx/conf.d/your_domain.com.conf
server {
listen 80;
listen [::]:80;
root /var/www/your_domain.com/html;
index index.html;
server_name your_domain.com www.your_domain.com;
access_log /var/log/nginx/your_domain.com.access.log;
error_log /var/log/nginx/your_domain.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
- Sau khi lưu lại file, bạn sẽ kiểm tra config có đúng syntax hay không bằng:
sudo nginx -t
Nếu mọi thứ đều ổn thì bạn sẽ nhận output như sau:
Kết quả
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- Khởi động lại Web Server bằng lệnh mình đã giới thiệu ở Bước 4: Quản lý dịch vụ Nginx.
bash (non-root)sudo systemctl restart nginx
- Mở trình duyệt truy cập vào website
http://your_domain.com
để xem kết quả. Nếu ở bước này bạn không có tên miền, bạn có thể trỏ file hosts trên máy tính của mình để truy cập.
Nếu như bạn chưa đăng kí tên miền, bạn có thể cấu hình file hosts trên máy tính để có thể truy cập website trên trình duyệt. Xem thêm hướng dẫn trỏ file hosts trên máy tính.
Bước 6: Các thư mục quan trọng trong Nginx
Bạn cần phải nắm các thư mục và các file cấu hình quan trọng của Nginx. Cụ thể:
1. Nội dung mã nguồn website:
/var/www/html/
– Đây là thư mục chứa nội dung mã nguồn website.
2. Các 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 của Nginx/etc/nginx/nginx.conf
– File config chính Nginx./etc/nginx/sites-available/
– Thư mục chứa các file cấu hình server block./etc/nginx/sites-enabled/
– Thư mục chứa Danh sách các server blocks được kích hoạt.
3. Các file log của Nginx, bao gồm access log và error log:
/var/log/nginx/access.log
– Chứa các lịch sử request tới Web server của bạn (Bạn có thể thay đổi việc lưu log lại hay không)./var/log/ngins/error.log
– Chứa các lỗi từ Nginx.
Tổng kết
Nginx là một web server khá dễ sử dụng, đặc biệt là nếu bạn chỉ cần một tên miền, một số kiến thức cơ bản, và có khả năng cấu hình tường lửa. Với những điều này, bạn có thể tự tạo ra một máy chủ web cho riêng mình. Nếu có bất kỳ câu hỏi nào, hãy đặt chúng ở phía dưới. Chúc bạn thành công!