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:
Outputpublic   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:
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:
<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:
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:
Outputnginx: 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: 
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.
Các tin liên quan
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Debian 102019-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
 

