Cách cài đặt máy chủ web Nginx với Let's Encrypt SSL trên Ubuntu

Tác giả Security+, T.Tư 26, 2024, 02:16:40 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Nginx là một máy chủ web miễn phí, mã nguồn mở và mạnh mẽ được phát triển bởi Igor Sysoev và xuất bản năm 2004. Nó cũng được sử dụng làm proxy ngược, bộ cân bằng tải HTTP và proxy e-mail cho IMAP, POP3 và SMTP. Nginx sử dụng kiến trúc hướng sự kiện và không đồng bộ thay vì kiến trúc hướng quy trình truyền thống. Nó được coi là máy chủ đáng tin cậy nhất nhờ khả năng xử lý các kết nối lớn, tốc độ và khả năng mở rộng. Nginx cung cấp nhiều tính năng như cân bằng tải, hỗ trợ IPv6, proxy ngược với bộ nhớ đệm, hỗ trợ FastCGI với bộ nhớ đệm, WebSockets, v.v.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách cài đặt máy chủ web Nginx với Let's Encrypt SSL trên Ubuntu 22.04.

1. Yêu cầu

  • Một máy chủ chạy Ubuntu 22.04.
  • Một tên miền hợp lệ trỏ đến IP máy chủ của bạn.
  • Mật khẩu gốc được cấu hình trên máy chủ.

2. Cài đặt máy chủ web Nginx trên Ubuntu 22.04

Theo mặc định, gói máy chủ web Nginx được bao gồm trong kho lưu trữ tiêu chuẩn của Ubuntu 22.04. Bạn có thể cài đặt nó bằng lệnh sau:

Mã nguồn [Chọn]
apt install nginx -y
Sau khi Nginx được cài đặt, hãy khởi động dịch vụ Nginx và kích hoạt nó để nó khởi động khi hệ thống khởi động lại:

Mã nguồn [Chọn]
systemctl start nginx
systemctl enable nginx

Bạn có thể kiểm tra trạng thái của Nginx bằng lệnh sau:

Mã nguồn [Chọn]
systemctl status nginx
Bạn sẽ thấy đầu ra sau:


Để kiểm tra phiên bản Nginx, hãy chạy lệnh sau:

Mã nguồn [Chọn]
nginx -v
Bạn sẽ nhận được phiên bản Nginx ở đầu ra sau:

Mã nguồn [Chọn]
nginx version: nginx/1.18.0 (Ubuntu)
3. Cài đặt tường lửa UFW

Theo mặc định, tường lửa UFW không được cài đặt trên máy chủ Ubuntu 22.04. Bạn có thể cài đặt nó bằng cách thực hiện lệnh sau:

Mã nguồn [Chọn]
apt install ufw -y
Sau khi tường lửa UFW được cài đặt, hãy liệt kê tất cả các ứng dụng bằng lệnh sau:

Mã nguồn [Chọn]
ufw app list
Ở đầu ra sau, bạn sẽ nhận được danh sách tất cả các ứng dụng có sẵn trong UFW:

Mã nguồn [Chọn]
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Bây giờ cho phép Nginx và OpenSSH trong tường lửa UFW bằng lệnh sau:

Mã nguồn [Chọn]
ufw allow 'Nginx Full'
ufw allow OpenSSH

Bây giờ hãy kích hoạt tường lửa UFW để nó khởi động sau khi khởi động lại hệ thống:

Mã nguồn [Chọn]
ufw enable
Tiếp theo, kiểm tra trạng thái của UFW bằng lệnh sau:

Mã nguồn [Chọn]
ufw status
Bạn sẽ thấy tất cả các quy tắc UFW ở đầu ra sau:

       

Bây giờ hãy mở trình duyệt web của bạn và truy cập trang kiểm tra máy chủ web Nginx qua URL   Đăng nhập để xem liên kết. Bạn sẽ thấy trang kiểm tra Nginx trên màn hình sau:


4. Định cấu hình máy chủ ảo Nginx

Nginx cung cấp các tính năng lưu trữ ảo cho phép bạn lưu trữ nhiều trang web trên một máy chủ. Trong phần này, chúng tôi sẽ hướng dẫn bạn cách thiết lập máy chủ ảo Nginx trên Ubuntu 22.04.

4.1. Tạo thư mục cho máy chủ ảo Nginx

Đầu tiên, bạn cần tạo một thư mục cho trang web của mình. Chúng tôi sẽ tạo một thư mục cho trang web có tên   Đăng nhập để xem liên kết.

Mã nguồn [Chọn]
mkdir -p /var/www/html/test.example.com/
Tiếp theo, thay đổi quyền sở hữu thư mục đã tạo thành người dùng dữ liệu www và nhóm dữ liệu www.

Mã nguồn [Chọn]
chown -R www-data:www-data /var/www/html/test.example.com/
chmod -R 755 /var/www/html/test.example.com/

Tiếp theo, tạo một trang HTML đơn giản cho trang web của bạn:

Mã nguồn [Chọn]
nano /var/www/html/test.example.com/index.html
Dán đoạn mã sau:

Mã nguồn [Chọn]
<html>
 <head>
  <title>Welcome to Nginx Webserver</title>
 </head>
 <body>
   <h1>Success!  Nginx is working on test.example.com</h1>
 </body>
</html>

Lưu và đóng tệp khi bạn hoàn tất.

4.2. Tạo tệp cấu hình Máy chủ ảo Nginx

Tiếp theo, bạn cần tạo cấu hình Máy chủ ảo Nginx để lưu trữ trang web   Đăng nhập để xem liên kết. Bạn có thể tạo nó bằng lệnh sau:

Mã nguồn [Chọn]
nano /etc/nginx/conf.d/test.example.com.conf
Thêm cấu hình sau:

Mã nguồn [Chọn]
server {
 listen 80;
 root /var/www/html/test.example.com/;

  index index.html index.htm index.nginx-debian.html;
  server_name test.example.com;

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

Lưu và đóng tệp khi bạn hoàn tất và kiểm tra Nginx để biết lỗi cấu hình:

Mã nguồn [Chọn]
nginx -t
Đầu ra phải không có lỗi trong cú pháp:

Mã nguồn [Chọn]
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Tiếp theo, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:

Mã nguồn [Chọn]
systemctl restart nginx
Bây giờ bạn có thể kiểm tra trạng thái của Nginx bằng lệnh sau:

Mã nguồn [Chọn]
systemctl status nginx
Bây giờ hãy mở trình duyệt web của bạn và kiểm tra trang web của bạn bằng URL   Đăng nhập để xem liên kết. Bạn sẽ thấy trang index.html trên màn hình sau:


5. Bảo mật máy chủ web Nginx với Let's Encrypt SSL

Theo mặc định, máy chủ web Nginx không được bảo mật. Vì vậy, nên cài đặt Let's Encrypt SSL để bảo mật thông tin liên lạc.

Trước tiên hãy cài đặt gói máy khách Certbot để quản lý chứng chỉ SSL:

Mã nguồn [Chọn]
apt install certbot python3-certbot-nginx -y
Sau khi cài đặt Certbot, hãy chạy lệnh sau để cài đặt và định cấu hình Let's Encrypt SSL cho trang web của bạn.

Mã nguồn [Chọn]
certbot --nginx -d test.example.com
Bạn sẽ được yêu cầu cung cấp địa chỉ email hợp lệ và chấp nhận các điều khoản sử dụng (xem bên dưới):


Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không (xem bên dưới):


Nhập 2 rồi nhấn Enter để hoàn tất cài đặt. Bạn sẽ thấy đầu ra sau:


Bây giờ trang web của bạn đã được bảo mật bằng Let's Encrypt SSL. Bạn có thể truy cập nó một cách an toàn thông qua URL   Đăng nhập để xem liên kết.

Chúc mừng! Bạn đã cài đặt thành công máy chủ web Nginx với Let's Encrypt SSL trên Ubuntu 22.04. Bây giờ bạn có thể sử dụng Nginx làm proxy ngược, máy chủ web hoặc bộ cân bằng tải.