Linux, CentOS

Hướng dẫn cài đặt Nginx trên CentOS 8

Written by ductri

Nginx là một trong những web server phổ biến nhất trên thế giới. Nó thân hiện hơn Apache trong hầu hết các trường hợp và có thể được sử dụng với vai trò là một máy chủ web hoặc reverse proxy. Sau đây là trình tự các bước cài đặt Nginx trên CentOS 8.

Bước 1: Cài đặt Nginx Web Server

Để cài đặt Nginx, chúng ta sẽ sử dụng trình quản lý gói dnf, đây là trình quản lý gói mặc định mới trên CentOS 8.

Cài đặt gói nginx với lệnh sau:

$sudo dnf install nginx

Khi được nhắc, hãy nhập y để xác nhận rằng bạn muốn cài đặt nginx. Sau đó, dnf sẽ cài đặt Nginx và các dependency cần thiết cho máy chủ của bạn.

Sau khi cài đặt xong, hãy chạy các lệnh sau để bật và khởi động máy chủ:

$sudo systemctl enable nginx
$sudo systemctl start nginx

Lệnh trên sẽ giúp Nginx tự động bật lên khi máy chủ khởi động lại.

Bước 2: Thiết lập Firewall

Chúng tôi khuyến nghị bạn nên luôn bật firewall để bảo vệ hệ thống trước các cuộc tấn công mạng, và bảo vệ cho máy chủ web. Trong trường hợp này, bạn chỉ cần mở port 80 trên firewall.

Chạy lệnh sau để bật vĩnh viễn các kết nối HTTP trên cổng 80

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

Để xác minh rằng dịch vụ tường lửa http đã được thêm chính xác hay chưa, bạn có thể chạy lệnh:

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

Bạn sẽ thấy đầu ra như thế này:

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 các thay đổi, bạn sẽ cần tải lại dịch vụ tường lửa:

$sudo firewall-cmd --reload

Bây giờ máy chủ Nginx của bạn đã được cài đặt đầy đủ và sẵn sàng để được truy cập bởi client từ bên ngoài.

Bước 3: Quản lý Nginx Process

Bây giờ máy chủ web của bạn đã hoạt động, chúng ta sẽ xem xét cách quản lý dịch vụ Nginx thông qua systemctl

Bất cứ khi nào bạn cần dừng máy chủ web của mình, bạn có thể sử dụng lệnh:

$sudo systemctl stop nginx

Để khởi động máy chủ web:

$sudo systemctl start nginx

Để khởi động lại máy chủ web:

$sudo systemctl restart nginx

Nginx cũng có thể tải lại các thay đổi cấu hình mà không bị mất kết nối:

$sudo systemctl reload nginx

Bước 4: Các thư mục và file cấu hình quan trọng

Bây giờ bạn đã biết cách quản lý dịch vụ Nginx, bạn nên dành ít phút để làm quen với một vài thư mục và file cấu hình quan trọng.

Content

/usr/share/nginx/html: đường dẫn thư mục gốc chứa nội dung web cần host. Bạn có thể thay đổi nó trong file cấu hình.

Server Configuration

/etc/nginx: Thư mục cấu hình Nginx. Tất cả các tệp cấu hình Nginx nằm ở đây.

/etc/nginx/nginx.conf: File cấu hình chính của Nginx. Ở đây bạn có thể sửa đổi để thay đổi cấu hình chính của Nginx.

/etc/nginx/conf.d/: Nơi chứa các file cấu hình server block, bạn muốn host nhiều website trên cùng 1 server nginx thì bạn sẽ định nghĩa tên miền của các website tại đây theo định dạng: your_domain.conf.

Server Logs

/var/log/nginx/access.log: Mọi request đến máy chủ web của bạn được ghi lại trong file log này.

/var/log/nginx/error.log: Bất kỳ lỗi Nginx sẽ được ghi lại trong file log này.

Bước 5: Cấu hình Server Block

Trong trường hợp bạn muốn host nhiều trang web trong cùng một máy chủ web Nginx, bạn sẽ cần phải thiết lập các Server Block.

Chúng ta sẽ thiết lập một server block cho một tên miền gọi là your_domain

Tạo thư mục mới chứa nội dung web cần host:

$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, tham chiếu người dùng hệ thống hiện tại của bạn:

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

Tạo một file index.html để thử nghiệm

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

với nội dung:

<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>
/var/www/your_domain/html/index.html

Tiếp theo chúng ta sẽ tạo một khối máy chủ mới tại /etc/nginx/conf.d/your_domain.conf

$sudo nano /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;
        }
}
/etc/nginx/conf.d/your_domain.conf

Sau đó lưu lại. Để đảm bảo rằng không có lỗi cú pháp trong bất kỳ tệp Nginx nào của bạn, hãy chạy lệnh sau để kiểm tra:

$sudo nginx -t

Nếu không có lỗi gì, nó sẽ cho ra kết quả:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Khi kiểm tra xong cấu hình, hãy khởi động lại Nginx để kích hoạt các thay đổi của bạn:

$sudo systemctl restart nginx

Trước khi bạn có thể kiểm tra các thay đổi từ trình duyệt của mình, bạn sẽ cần cập nhật SELinux security của server để Nginx được phép phân phát nội dung từ thư mục /var/www/your_domain

Lệnh sau sẽ cho phép tài liệu tùy chỉnh của bạn được phục vụ dưới dạng nội dung HTTP:

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

Bây giờ hãy mở trình duyệt và nhập http://your_domain để xem kết quả!

Như vậy bạn đã hoàn thành các bước cài đặt Nginx trên CentOS 8.