Cách cài đặt Nginx trên Ubuntu 18.04

Tác giả NetworkEngineer, T.Mười 21, 2021, 02:41:45 CHIỀU

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

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

Cách cài đặt Nginx trên Ubuntu 18.04


Nginx là một trong những máy chủ web phổ biến nhất trên thế giới và chịu trách nhiệm lưu trữ một số trang web lớn nhất và có lưu lượng truy cập cao nhất trên internet. Nó thân thiện với tài nguyên hơn Apache trong hầu hết các trường hợp và có thể được sử dụng như một máy chủ web hoặc proxy ngược.

Trong hướng dẫn này, bạn sẽ học cách cài đặt Nginx trên máy chủ Ubuntu 18.04 của mình và về các tập tin và thư mục Nginx quan trọng.

Trước khi bắt đầu hướng dẫn này, bạn nên có một người dùng thông thường, không phải root có quyền sudo và một tường lửa cơ bản được cấu hình trên máy chủ của bạn. Bạn có thể tìm hiểu cách định cấu hình tài khoản người dùng thông thường bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 18.04.

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

1. Cài đặt Nginx.

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

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

Mã nguồn [Chọn]
# sudo apt update
# sudo apt install nginx

Sau khi chấp nhận thủ tục, APT sẽ cài đặt Nginx và bất kỳ phụ thuộc bắt buộc nào vào máy chủ của bạn.

2. Điều chỉnh tường lửa.

Trước khi thử nghiệm Nginx, phần mềm tường lửa cần được điều chỉnh để cho phép truy cập vào dịch vụ. Nginx tự đăng ký như một dịch vụ khi tường lửa UFW được cài đặt, giúp dễ dàng cho phép truy cập Nginx.

Liệt kê các cấu hình ứng dụng được biết và đi qua tường lửa UFW bằng cách gõ như sau:

Mã nguồn [Chọn]
# sudo ufw app list
Đầu ra của bạn phải là danh sách các cấu hình ứng dụng:

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

Danh sách này hiển thị 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 web bình thường, không được mã hóa) và cổng 443 (lưu lượng được mã hóa TLS / SSL)
  • Nginx HTTP: Cấu hình này chỉ mở cổng 80 (lưu lượng 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 mà bạn đã cấu hình. Vì bạn chưa cấu hình SSL cho máy chủ của mình trong hướng dẫn này, bạn chỉ cần cho phép lưu lượng truy cập trên cổng 80.

Bạn có thể kích hoạt tính năng này bằng cách nhập như sau:

Mã nguồn [Chọn]
# sudo ufw allow 'Nginx HTTP'

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

Mã nguồn [Chọn]
# sudo ufw status
Bạn sẽ nhận được danh sách lưu lượng HTTP được phép trong đầu ra:
       
Mã nguồn [Chọn]
Status: active

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


Bây giờ bạn đã thêm quy tắc tường lửa thích hợp, bạn có thể kiểm tra xem máy chủ web của mình có đang chạy và có thể phân phối nội dung chính xác hay không.

3. Kiểm tra máy chủ Web của bạn.

Khi kết thúc quá trình cài đặt, Ubuntu 18.04 khởi động Nginx. Máy chủ web đã được thiết lập và đang chạy.

Kiểm tra với systemdhệ thống init để đảm bảo dịch vụ đang chạy:

Mã nguồn [Chọn]
# systemctl status nginx
Mã nguồn [Chọn]
● 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


Kết quả này cho thấy rằng dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra điều này là thực sự yêu cầu một trang từ Nginx.

Bạn có thể truy cập trang đích Nginx mặc định để xác nhận rằng phần mềm đang chạy đúng cách bằng cách điều hướng đến địa chỉ IP của máy chủ của bạn. Nếu bạn không biết địa chỉ IP của máy chủ của mình, bạn có thể lấy nó theo một số cách khác nhau.

Hãy thử nhập nội dung sau vào dấu nhắc lệnh của máy chủ của bạn:

Mã nguồn [Chọn]
# ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Bạn sẽ nhận được một vài dòng. Bạn có thể thử từng cái trong trình duyệt web của mình để xác nhận xem chúng có hoạt động không.

Một giải pháp thay thế đang chạy lệnh sau, lệnh này sẽ tạo địa chỉ IP công cộng của bạn được xác định từ một vị trí khác trên internet:

Mã nguồn [Chọn]
# curl -4 icanhazip.com
Khi bạn có địa chỉ IP của máy chủ, hãy nhập địa chỉ đó vào thanh địa chỉ của trình duyệt:

Mã nguồn [Chọn]
http://your_server_ip
Bạn sẽ nhận được trang đích Nginx mặc định:


Trang này được bao gồm với Nginx để xác minh rằng máy chủ đang chạy chính xác.

4. Quản lý tiến trình Nginx.

Bây giờ bạn đã thiết lập và chạy máy chủ web của mình, hãy xem lại một số lệnh quản lý cơ bản.

Để dừng máy chủ web của bạn, hãy nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl stop nginx
Để khởi động máy chủ web khi nó bị dừng, hãy nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl start nginx
Để dừng và sau đó khởi động lại dịch vụ, hãy nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl restart nginx
Nếu bạn chỉ đơn giản là thực hiện thay đổi cấu hình, bạn thường có thể tải lại Nginx mà không làm rớt kết nối thay vì khởi động lại nó. Để thực hiện việc này, hãy nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl reload nginx
Theo mặc định, Nginx được cấu hình để khởi động tự động khi máy chủ khởi động. Nếu đây không phải là những gì bạn muốn, bạn có thể vô hiệu hóa hành vi này bằng cách nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl disable nginx
Để bật lại dịch vụ khởi động khi hệ điều hành khởi động, bạn có thể nhập như sau:

Mã nguồn [Chọn]
# sudo systemctl enable nginx
Nginx bây giờ sẽ tự động khởi động khi máy chủ khởi động lại.

5. Thiết lập khối máy chủ (Khuyến nghị)

Khi sử dụng máy chủ web Nginx, các khối máy chủ (tương tự như virtual hosts trong Apache) có thể được sử dụng để đóng gói chi tiết cấu hình và lưu trữ nhiều tên miền từ một máy chủ duy nhất. Chúng ta sẽ thiết lập một tên miền có tên your_domain, nhưng bạn nên thay thế miền này bằng tên miền của riêng bạn.

Nginx trên Ubuntu 18.04 có một khối máy chủ được kích hoạt theo mặc định được định cấu hình để cung cấp tài liệu ra khỏi một thư mục tại /var/www/html. Mặc dù điều này hoạt động tốt cho một trang web, nhưng nó có thể trở nên khó sử dụng nếu bạn đang lưu trữ nhiều trang web. Thay vì sửa đổi /var/www/html, hãy tạo cấu trúc thư mục bên trong /var/www cho trang your_domain của chúng ta, giữ nguyên vị trí này /var/www/html làm thư mục mặc định sẽ được phục vụ nếu yêu cầu của khách hàng không khớp với bất kỳ trang web nào khác.

Tạo thư mục cho your_domain như sau, sử dụng -p để tạo bất kỳ thư mục mẹ nào cần thiết:

Mã nguồn [Chọn]
# sudo mkdir -p /var/www/your_domain/html
Tiếp theo, gán quyền sở hữu thư mục với biến môi trường $USER:

Mã nguồn [Chọn]
# sudo chown -R $USER:$USER /var/www/your_domain/html
Các quyền của gốc web của bạn phải chính xác nếu bạn chưa sửa đổi giá trị của mình, nhưng bạn có thể đảm bảo bằng cách nhập như sau:

Mã nguồn [Chọn]
# sudo chmod -R 755 /var/www/your_domain
Tiếp theo, tạo một trang mẫu index.html bằng cách sử dụng nano hoặc trình chỉnh sửa yêu thích của bạn:

Mã nguồn [Chọn]
# nano /var/www/your_domain/html/index.html
Bên trong, thêm HTML mẫu sau:

Mã nguồn [Chọn]
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success! The your_domain server block is working!</h1>
    </body>
</html>

Lưu và đóng tập tin khi bạn hoàn tất. Nếu bạn sử dụng nano, bạn có thể thoát bằng cách nhấn CTRL + X sau đó Y và ENTER.

Để Nginx phân phát nội dung này, bạn cần tạo một khối máy chủ với các lệnh chính xác. Thay vì sửa đổi trực tiếp tập tin cấu hình mặc định, hãy tạo một tập tin mới tại /etc/nginx/sites-available/your_domain

Mã nguồn [Chọn]
# sudo nano /etc/nginx/sites-available/your_domain
Thêm khối cấu hình sau, khối này tương tự như khối mặc định, nhưng được cập nhật cho thư mục và tên miền mới của bạn:

Mã nguồn [Chọn]
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 phải cập nhật cấu hình vào thư mục mới và tên miền. Lưu và đóng tập tin khi bạn hoàn tất.

Tiếp theo, kích hoạt tập tin bằng cách tạo liên kết từ nó đến thư mục sites-enabled mà Nginx đọc từ đó trong khi khởi động:

Mã nguồn [Chọn]
# sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Hai khối máy chủ hiện đã được kích hoạt và cấu hình để phản hồi các yêu cầu dựa trên các lệnh listen và lệnh của chúng server_name:

  • your_domain: Sẽ trả lời các yêu cầu cho your_domain và www.your_domain.
  • default: Sẽ phản hồi bất kỳ yêu cầu nào trên cổng 80 không khớp với hai khối còn lại.

Để tránh sự cố bộ nhớ có thể xảy ra khi thêm tên máy chủ bổ sung, cần phải điều chỉnh một giá trị duy nhất trong tập tin /etc/nginx/nginx.conf. Mở tập tin:

Mã nguồn [Chọn]
# sudo nano /etc/nginx/nginx.conf
Tìm server_names_hash_bucket_size và xóa biểu tượng # để bỏ ghi chú dòng:

Mã nguồn [Chọn]
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

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

Tiếp theo, hãy kiểm tra để đảm bảo rằng không có lỗi cú pháp nào trong bất kỳ tập tin Nginx nào của bạn:

Mã nguồn [Chọn]
# sudo nginx -t
Nếu không có bất kỳ sự cố nào, hãy khởi động lại Nginx để kích hoạt các thay đổi của bạn:

Mã nguồn [Chọn]
# sudo systemctl restart nginx
Nginx bây giờ sẽ cung cấp tên miền của bạn. Bạn có thể kiểm tra điều này bằng cách điều hướng đến, nơi bạn sẽ thấy một cái gì đó như sau: http://your_domain


6. Làm quen với các tập tin và thư mục Nginx quan trọng.

Bây giờ bạn đã biết cách tự quản lý dịch vụ Nginx, bạn nên dành vài phút để tự làm quen với một số thư mục và tập tin quan trọng.

6.1. Nội dung.

/var/www/html: Nội dung web thực tế, theo mặc định chỉ bao gồm trang Nginx mặc định mà bạn đã xem trước đó, được cung cấp ra khỏi thư mục /var/www/html. Điều này có thể được thay đổi bằng cách thay đổi các tập tin cấu hình Nginx.

6.2. Cấu hình máy chủ.

  • /etc/nginx: Thư mục cấu hình Nginx. Tất cả các tập tin cấu hình Nginx đều nằm ở đây.
  • /etc/nginx/nginx.conf: Tập tin cấu hình Nginx chính. Điều này có thể được sửa đổi để thực hiện các thay đổi đối với cấu hình toàn cục của Nginx.
  • /etc/nginx/sites-available/: Thư mục nơi có thể lưu trữ các khối máy chủ trên mỗi trang web. Nginx sẽ không sử dụng các tập tin cấu hình được tìm thấy trong thư mục này trừ khi chúng được liên kết với thư mục sites-enabled. Thông thường, tất cả cấu hình khối máy chủ được thực hiện trong thư mục này, và sau đó được kích hoạt bằng cách liên kết đến thư mục khác.
  • /etc/nginx/sites-enabled/: Thư mục lưu trữ các khối máy chủ cho mỗi trang web. Thông thường, chúng được tạo bằng cách liên kết đến các tập tin cấu hình được tìm thấy trong thư mục sites-available.
  • /etc/nginx/snippets: Thư mục này chứa các đoạn cấu hình có thể được đưa vào ở những nơi khác trong cấu hình Nginx. Các phân đoạn cấu hình có thể lặp lại tiềm năng là những ứng cử viên tốt để cấu trúc lại thành các đoạn mã.

6.3. Nhật ký máy chủ.

  • /var/log/nginx/access.log: Mọi yêu cầu đến máy chủ web của bạn đều được ghi lại trong tập tin nhật ký này trừ khi Nginx được cấu hình để làm theo cách khác.
  • /var/log/nginx/error.log: Mọi lỗi Nginx sẽ được ghi lại trong nhật ký này.

Bây giờ bạn đã cài đặt máy chủ web của mình, bạn có nhiều tùy chọn về loại nội dung để phân phát và các công nghệ bạn muốn sử dụng để tạo ra trải nghiệm phong phú hơn.

Nếu bạn muốn xây dựng một bộ ứng dụng hoàn chỉnh hơn, hãy xem bài viết về cách cấu hình LEMP trên Ubuntu 18.04.