Thứ ba, 03/03/2020 | 00:00 GMT+7

Cách cài đặt Nginx trên CentOS 8

Nginx là một trong những web server 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à phổ biến 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 dùng như một web server hoặc Reverse Proxy .

Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt Nginx trên server CentOS 8.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần quyền truy cập vào server CentOS 8 với quyền là user không phải root có quyền sudo và firewall hoạt động được cài đặt trên server của bạn. Để cài đặt điều này, bạn có thể làm theo Hướng dẫn Cài đặt Server Ban đầu cho CentOS 8 của ta .

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

Để cài đặt Nginx, ta sẽ sử dụng trình quản lý gói dnf , 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:

  • sudo dnf install nginx

Khi được yêu cầu , hãy nhập y để xác nhận bạn muốn cài đặt nginx . Sau đó, dnf sẽ cài đặt Nginx và mọi phụ thuộc vào server 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 server :

  • sudo systemctl enable nginx
  • sudo systemctl start nginx

Điều này sẽ làm cho Nginx khởi động khi server khởi động hệ thống.

Bước 2 - Điều chỉnh luật firewall

Trong trường hợp bạn đã bật firewalld firewalld theo hướng dẫn trong hướng dẫn cài đặt server ban đầu của ta cho CentOS 8 , bạn cần điều chỉnh cài đặt firewall để cho phép các kết nối bên ngoài trên web server Nginx của bạn, chạy trên cổng 80 theo mặc định.

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 dịch vụ firewall http đã được thêm đúng cách, bạn có thể chạy:

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

Bạn sẽ thấy kết quả như thế này:

Output
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 cần reload dịch vụ firewall :

  • sudo firewall-cmd --reload

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

Bước 3 - Kiểm tra Server Web của bạn

Như vậy, bạn có thể kiểm tra xem web server Nginx của bạn có đang hoạt động hay không bằng cách truy cập vào địa chỉ IP công cộng hoặc domain của server từ trình duyệt web .

Lưu ý : Trong trường hợp bạn đang sử dụng DigitalOcean làm nhà cung cấp dịch vụ lưu trữ DNS của bạn , bạn có thể kiểm tra tài liệu sản phẩm của ta để biết hướng dẫn chi tiết về cách cài đặt domain mới và trỏ nó đến server của bạn.

Nếu bạn không có domain được trỏ đến server của bạn và bạn không biết địa chỉ IP công cộng của server , bạn có thể tìm domain đó bằng cách chạy lệnh sau:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Thao tác này sẽ in ra một vài địa chỉ IP. Bạn có thể thử lần lượt từng cái trong trình duyệt web của bạn .

Một cách khác, bạn có thể tìm địa chỉ IP của bạn với nào có thể truy cập được, khi được xem từ các vị trí khác trên internet:

  • curl -4 icanhazip.com

Nhập địa chỉ mà bạn nhận được trong trình duyệt web của bạn và địa chỉ đó sẽ đưa bạn đến trang đích mặc định của Nginx:

Trang Nginx mặc định CentOS 8

Nếu bạn thấy trang này, thì web server của bạn hiện đã được cài đặt chính xác.

Bước 4 - Quản lý Tiến trình Nginx

Đến đây bạn đã cài đặt và chạy web server của bạn , ta sẽ xem xét cách quản lý dịch vụ Nginx thông qua systemctl .

Khi nào bạn cần dừng web server của bạn , bạn có thể sử dụng:

  • sudo systemctl stop nginx

Để khởi động web server khi nó bị dừng, hãy nhập:

  • sudo systemctl start nginx

Để dừng và sau đó bắt đầu lại dịch vụ, bạn có thể sử dụng:

  • sudo systemctl restart nginx

Nginx cũng có thể reload các thay đổi cấu hình mà không làm mất kết nối . Để làm điều này, hãy nhập:

  • sudo systemctl reload nginx

Theo mặc định, Nginx được cấu hình để khởi động tự động khi server khởi động. Nếu đây không phải là những gì bạn muốn, bạn có thể tắt hành vi này bằng lệnh :

  • sudo systemctl disable nginx

Để chạy lại dịch vụ và làm cho Nginx bắt đầu lại khi khởi động, bạn có thể sử dụng:

  • sudo systemctl enable nginx

Bước 5 - Làm quen với các file và folder Nginx quan trọng

Đến đây bạn đã biết cách 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ố folder và file quan trọng.

Nội dung

  • /usr/share/nginx/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 phân phát từ folder /usr/share/nginx/html . Điều này có thể được thay đổi bằng cách thay đổi các file cấu hình Nginx.

Cấu hình server

  • /etc/nginx : Thư mục cấu hình Nginx. Tất cả các file cấu hình Nginx đều nằm ở đây.
  • /etc/nginx/nginx.conf : Tệp cấu hình Nginx chính. Điều này có thể được sửa đổi để áp dụng các thay đổi đối với cấu hình global của Nginx.
  • /etc/nginx/conf.d/ : Thư mục này chứa các file cấu hình khối server , nơi bạn có thể xác định các trang web được lưu trữ trong Nginx. Một cách tiếp cận điển hình là đặt mỗi trang web trong một file riêng biệt được đặt tên theo domain của trang web, chẳng hạn như your_domain.conf .

Nhật ký server

  • /var/log/nginx/access.log : Mọi yêu cầu đến web server của bạn đều được ghi lại trong file log 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 log này.

Bước 6 - Cài đặt khối server (Tùy chọn)

Trong trường hợp bạn muốn lưu trữ nhiều trang web trong cùng một web server Nginx, bạn cần cài đặt các khối server . Các khối server Nginx hoạt động theo cách tương tự như các server ảo Apache, cho phép một server duy nhất phản hồi với nhiều domain và cung cấp nội dung khác nhau cho từng domain đó. Trên CentOS 8, các khối server được xác định trong file .conf nằm tại /etc/nginx/conf.d .

Ta sẽ cài đặt một khối server cho domain có tên your_domain . Để tìm hiểu thêm về cách cài đặt domain với DigitalOcean, hãy xem phần giới thiệu của ta về DigitalOcean DNS .

Theo mặc định, Nginx trên CentOS 8 được cấu hình để cung cấp tài liệu ra khỏi folder tại /usr/share/nginx/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ông thể quản lý được nếu bạn đang lưu trữ nhiều trang web. Thay vì sửa đổi /usr/share/nginx/html , ta sẽ tạo cấu trúc folder bên trong /var/www cho trang web your_domain , giữ nguyên /usr/share/nginx/html làm folder mặc định sẽ được phân phát nếu khách hàng yêu cầu không trùng với bất kỳ trang web nào khác.

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

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

Tiếp theo, chỉ định quyền sở hữu folder với biến môi trường $USER , biến này sẽ tham chiếu đến user hệ thống hiện tại của bạn:

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

Tiếp theo, ta sẽ tạo một trang index.html mẫu để kiểm tra cấu hình khối server . Trình soạn thảo văn bản mặc định đi kèm với CentOS 8 là vi . vi là một editor cực kỳ mạnh mẽ, nhưng nó có thể hơi khó đối với user chưa quen . Bạn có thể cần cài đặt một editor thân thiện với user hơn như nano để tạo điều kiện chỉnh sửa các file cấu hình trên server CentOS 8 của bạn:

  • sudo dnf install nano

Đến đây bạn có thể sử dụng nano để tạo index.html mẫu:

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

Bên trong file đó, hãy thêm mã HTML 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 file khi bạn hoàn tất. Nếu bạn đã sử dụng nano , bạn có thể thực hiện bằng cách nhấn CTRL + X , Y , sau đó ENTER .

Để Nginx phân phát nội dung này, ta cần tạo một khối server với các lệnh chính xác trỏ đến root web tùy chỉnh của ta . Ta sẽ tạo một khối server mới tại /etc/nginx/conf.d/ your_domain.conf :

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

Dán vào đoạn cấu hình sau:

/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;         } } 

Lưu file khi bạn chỉnh sửa xong nội dung của nó.

Để đảm bảo không có lỗi cú pháp nào trong các file Nginx nào của bạn, hãy chạy:

  • sudo nginx -t

Nếu không có sự cố nào , bạn sẽ thấy kết quả sau:

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

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

  • sudo systemctl restart nginx

Trước khi có thể kiểm tra các thay đổi từ trình duyệt của bạn , bạn cần cập nhật ngữ cảnh bảo mật SELinux của server để Nginx được phép cung cấp nội dung từ folder /var/www/ your_domain .

Lệnh sau sẽ cho phép root tài liệu tùy chỉnh của bạn được phân phát 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ờ, bạn có thể kiểm tra cài đặt domain tùy chỉnh của bạn bằng cách chuyển đến http:// your_domain , tại đây bạn sẽ thấy thông báo như sau:

Khối  server  Nginx

Trang này đang hiển thị mã HTML mà ta đã xác định trong root tài liệu tùy chỉnh được tạo cho khối server . Nếu bạn có thể thấy trang này, điều đó nghĩa là server Nginx của bạn đã được cấu hình chính xác để phục vụ domain của bạn.

Kết luận

Trong hướng dẫn này, ta đã xem cách cài đặt và cài đặt Nginx, một web server hiệu suất cao và Reverse Proxy . Ta đã xem xét cách quản lý dịch vụ Nginx đang chạy trên server của bạn và đâu là folder chính được Nginx sử dụng để lưu trữ file cấu hình, nội dung và log .

Từ đây, bạn có nhiều tùy chọn cho loại nội dung và công nghệ mà bạn có thể cần sử dụng trong các trang web được lưu trữ trong web server của bạn.


Tags:

Các tin trước

Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Debian 10 2019-07-25
Cách tạo chứng chỉ SSL tự ký cho Nginx trên Debian 10 2019-07-15
Cách bảo mật Nginx bằng Let's Encrypt trên Debian 10 2019-07-11
Cách cài đặt Nginx trên Debian 10 2019-07-10
Cách cài đặt và bảo mật phpMyAdmin bằng Nginx trên server Debian 9 2019-06-13
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server Ubuntu 18.04 2019-04-18
Cách bảo mật một ứng dụng Node.js được chứa đựng bằng Nginx, Let's Encrypt và Docker Compose 2019-01-04
Cách cài đặt Nginx trên FreeBSD 11.2 2018-11-15
Cách bảo mật Nginx bằng NAXSI trên Ubuntu 16.04 2018-11-09
Cách tạo chứng chỉ SSL tự ký cho Nginx trên Debian 9 2018-09-07