Hướng dẫn cài đặt Nginx trên Rocky Linux 9

cai dat nginx tren rocky linux 9 1

Nginx là một trong những máy chủ web phổ biến nhất thế giới và đang chịu trách nhiệm phục vụ một số trang web có lưu lượng truy cập lớn nhất trên internet. Nó là một lựa chọn nhẹ, có thể được sử dụng làm máy chủ web hoặc reverse proxy.

Trong hướng dẫn này, bạn sẽ được tìm hiểu cách cài đặt Nginx trên máy chủ Rocky Linux 9, điều chỉnh firewall, quản lý tiến trình của Nginx và thiết lập các server block để phục vụ nhiều domain trên cùng một máy chủ.

Yêu cầu tiên quyết

Trước khi bắt đầu, bạn nên có một tài khoản người dùng thường (không phải root) đã được cấu hình với quyền sudo trên máy chủ của bạn. Bạn có thể tìm hiểu cách cấu hình tài khoản người dùng thường bằng cách tham khảo hướng dẫn “Cài đặt máy chủ ban đầu với Rocky Linux 9.”

Ngoài ra, bạn cũng nên đăng ký tên miền trước khi hoàn thành các bước cuối của hướng dẫn này. Để tìm hiểu thêm về cách thiết lập tên miền với DataOnline, vui lòng tham khảo Giới thiệu về DNS của DataOnline.

Khi đã có tài khoản, hãy đăng nhập với tư cách người dùng thường để bắt đầu.

Bước 1 – Cài đặt Nginx trên Rocky Linux 9

Vì Nginx có sẵn trong các kho lưu trữ mặc định của Rocky Linux, bạn có thể cài đặt nó chỉ với một lệnh sử dụng trình quản lý gói dnf.

Cài đặt gói nginx bằng lệnh sau:

sudo dnf install nginx

Khi được nhắc, nhập y để xác nhận cài đặt Nginx. Sau đó, dnf sẽ cài đặt Nginx và các phụ thuộc cần thiết trên máy chủ của bạn.

Sau khi cài đặt xong, chạy các lệnh sau để kích hoạt và khởi động máy chủ web:

sudo systemctl enable nginx
sudo systemctl start nginx

Lệnh trên sẽ khiến Nginx khởi động lại tự động mỗi khi máy chủ được khởi động lại. Máy chủ web mới của bạn hiện đã hoạt động, nhưng trước khi kiểm tra, bạn có thể cần điều chỉnh cấu hình firewall.

Nginx Rocky Linux 9

Bước 2 – Điều chỉnh firewall

Nếu bạn đã bật firewall firewalld như trong hướng dẫn “Cài đặt máy chủ ban đầu với Rocky Linux 9,” bạn sẽ cần điều chỉnh cài đặt firewall để cho phép kết nối từ bên ngoài đến máy chủ Nginx, vốn chạy mặc định trên cổng 80.

Chạy lệnh sau để cho phép kết nối HTTP (cổng 80) vĩnh viễn:

sudo firewall-cmd --permanent --add-service=http

Để xác minh rằng dịch vụ http đã được thêm thành công, bạn có thể chạy:

sudo firewall-cmd --permanent --list-all

Bạn sẽ thấy output như sau:

public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Để áp dụng thay đổi, tải lại dịch vụ firewall:

sudo firewall-cmd --reload

Máy chủ web của bạn bây giờ đã có thể truy cập từ bên ngoài.

Bước 3 – Kiểm tra máy chủ web

Tại thời điểm này, máy chủ web của bạn nên đang hoạt động.

Bạn có thể dùng lệnh systemctl status để kiểm tra trạng thái dịch vụ:

systemctl status nginx

Ouput :

● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
    Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 18387 (nginx)
      Tasks: 3 (limit: 10938)
     Memory: 2.8M
        CPU: 43ms
     CGroup: /system.slice/nginx.service
             ├─18387 "nginx: master process /usr/sbin/nginx"
             ├─18388 "nginx: worker process"
             └─18389 "nginx: worker process"

Như output trên xác nhận, dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra là thực sự yêu cầu một trang từ Nginx.

Bạn có thể truy cập trang mặc định của Nginx để xác nhận rằng phần mềm đang chạy đúng bằng cách truy cập địa chỉ IP của máy chủ. Nếu bạn không biết địa chỉ IP của máy chủ, hãy dùng công cụ icanhazip.com để lấy địa chỉ IP công cộng:

curl -4 icanhazip.com

Truy cập http://your_server_ip (thay your_server_ip bằng địa chỉ máy chủ của bạn) trong trình duyệt.

Bạn sẽ nhận được trang landing mặc định của Nginx.

Nginx default page

Bước 4 – Quản lý tiến trình Nginx

Giờ bạn đã có máy chủ web hoạt động, hãy xem qua một số lệnh quản lý dịch vụ.

Để dừng máy chủ web, sử dụng lệnh:

sudo systemctl stop nginx

Để khởi động máy chủ khi nó đang dừng, sử dụng:

sudo systemctl start nginx

Để dừng và khởi động lại dịch vụ, sử dụng:

sudo systemctl restart nginx

Nếu bạn chỉ cần tải lại cấu hình mà không ngắt kết nối, Nginx có thể reload:

sudo systemctl reload nginx

Nếu trước đó bạn đã cấu hình Nginx tự động khởi động cùng hệ thống, bạn có thể vô hiệu hóa tính năng này bằng lệnh:

sudo systemctl disable nginx

Để kích hoạt lại, dùng:

sudo systemctl enable nginx

Bước 5 – Làm quen với các tệp và thư mục quan trọng của Nginx

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

Nội dung

  • /usr/share/nginx/html: Nơi chứa nội dung web thực sự, mặc định chỉ có trang Nginx trang chủ mà bạn đã thấy trước đó. Thư mục này có thể được thay đổi bằng cách chỉnh sửa các tệp cấu hình của Nginx.

Cấu hình máy chủ

  • /etc/nginx: Thư mục cấu hình của Nginx. Tất cả các tệp cấu hình của Nginx được lưu trữ ở đây.
  • /etc/nginx/nginx.conf: Tệp cấu hình chính của Nginx. Bạn có thể chỉnh sửa tệp này để thay đổi cấu hình toàn cục của Nginx.
  • /etc/nginx/conf.d/: Thư mục chứa các tệp cấu hình server block, nơi bạn định nghĩa các trang web được phục vụ bởi Nginx. Một cách tiếp cận thông thường là để mỗi trang web có một tệp riêng được đặt tên theo tên miền của trang đó, ví dụ: your_domain.conf.

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 được ghi lại trong tệp nhật ký này, trừ khi Nginx được cấu hình khác.
  • /var/log/nginx/error.log: Mọi lỗi của Nginx sẽ được ghi lại trong tệp nhật ký này.

Giờ bạn đã sẵn sàng để cấu hình trang web phục vụ một hoặc nhiều domain.

Bước 6 – Thiết lập server block (Tùy chọn)

Khi sử dụng máy chủ web Nginx, các server block (tương tự như virtual hosts trong Apache) có thể được sử dụng để tổ chức các chi tiết cấu hình và phục vụ nhiều domain từ cùng một máy chủ.

Trên Rocky Linux 9, server block được định nghĩa trong các tệp .conf nằm ở /etc/nginx/conf.d.

Chúng ta sẽ thiết lập một domain có tên your_domain; bạn hãy thay thế bằng tên domain của riêng bạn.

Theo mặc định, Nginx trên Rocky Linux 9 được cấu hình để phục vụ tài liệu từ thư mục /usr/share/nginx/html. Trong khi điều này phù hợp cho một trang web duy nhất, nó có thể gây khó quản lý nếu bạn host nhiều trang. Thay vì sửa đổi /usr/share/nginx/html, bạn sẽ tạo một cấu trúc thư mục trong /var/www cho website your_domain, giữ nguyên /usr/share/nginx/html làm thư mục mặc định nếu không có yêu cầu nào khớp với các trang web khác.

Tạo thư mục cho your_domain với cờ -p để tạo các thư mục cha nếu cần:

sudo mkdir -p /var/www/your_domain/html

Tiếp theo, thay đổi quyền sở hữu thư mục với biến môi trường $USER, biểu thị người dùng hiện tại:

sudo chown -R $USER:$USER /var/www/your_domain/html

Bây giờ, tạo một trang index.html mẫu để kiểm tra cấu hình server block. Trình soạn thảo mặc định của Rocky Linux 9 là vi, nhưng bạn có thể cài đặt một trình soạn thảo thân thiện như nano:

sudo dnf install nano

Tiếp theo, tạo tệp index.html mẫu bằng nano hoặc trình soạn thảo bạn ưa thích:

nano /var/www/your_domain/html/index.html

Trong tệp, thêm nội dung HTML mẫu sau:
/var/www/your_domain/html/index.html

<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Lưu và đóng tệp khi xong. Nếu sử dụng nano, nhấn CTRL + X, sau đó nhấn Y và Enter để lưu.

Để Nginx phục vụ nội dung này, bạn cần tạo một server block với các chỉ thị trỏ đến thư mục gốc web của bạn. Tạo một server block mới tại /etc/nginx/conf.d/your_domain.conf:

sudo nano /etc/nginx/conf.d/your_domain.conf

Dán cấu hình sau vào tệp:
/etc/nginx/conf.d/your_domain.conf

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

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

Nhận thấy rằng chúng ta đã cập nhật chỉ thị root tới thư mục mới và server_name thành tên domain của bạn. Lưu và đóng tệp.

Hai server block hiện đã được kích hoạt và cấu hình để đáp ứng các yêu cầu dựa trên các chỉ thị listen và server_name:

  • your_domain: Sẽ phản hồ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 block nào khác.

Tiếp theo, kiểm tra xem có lỗi cú pháp nào trong các tệp cấu hình Nginx không bằng lệnh:

sudo nginx -t

Nếu không có lỗi, khởi động lại Nginx để áp dụng thay đổi:

sudo systemctl restart nginx

Trước khi kiểm tra bằng trình duyệt, bạn cần cập nhật SELinux context cho máy chủ của bạn để Nginx được phép phục vụ nội dung từ thư mục /var/www/your_domain. Lệnh sau sẽ cho phép thư mục này được phục vụ như nội dung HTTP:

chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

Giờ Nginx đã phục vụ domain của bạn. Bạn có thể kiểm tra bằng cách truy cập http://your_domain trong trình duyệt.

Nginx first server block

Kết luận

Giờ đây, bạn đã cài đặt thành công máy chủ web Nginx trên Rocky Linux 9 và có nhiều lựa chọn để phục vụ nội dung cũng như sử dụng các công nghệ nhằm tạo ra trải nghiệm phong phú hơn.

Để thiết lập HTTPS cho tên miền của bạn với chứng chỉ SSL miễn phí từ Let’s Encrypt, hãy chuyển sang hướng dẫn “Cách bảo mật Nginx với Let’s Encrypt trên Rocky Linux 9.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *