NGINX là gì? Hướng dẫn kiểm tra và cài đặt NGINX Server

NGINX là gì?

NGINX là một phần mềm web server mã nguồn mở, sử dụng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous). Mục tiêu ban đầu để phục vụ HTTP cache nhưng sau được áp dụng vào reverse proxy, HTTP load balancer và các giao thức truyền mail như IMAP4, POP3, và SMTP. Cách thức vận hành của NGINX là gì? Cùng tìm hiểu nhé!

NGINX là gì

NGINX là một phần mềm web server mã nguồn mở đáng tin cậy

NGINX chính thức ra đời vào tháng 10/2014. Đây là phần mềm giúp server có tốc độ và khả năng mở rộng lớn nhất, đồng thời, xử lý và thao tác trên hàng nghìn kết nối cùng lúc. Do đó, rất nhiều “ông lớn” công nghệ hiện nay đều lựa chọn NGINX như Google, Adobe, Netflix, WordPress

Bạn có thể tìm hiểu thêm về các giao thức truyền mail trong bài viết: POP3, SMTP, IMAP là gì?

NGINX hoạt động như thế nào?

NGINX cũng hoạt động tương tự như các server khác

NGINX cũng hoạt động tương tự như các server khác

Về cơ bản, NGINX cũng hoạt động tương tự như các web server khác. Khi bạn mở một trang web, trình duyệt của bạn sẽ liên hệ với server chứa website đó. Server sẽ tìm kiếm đúng file yêu cầu của website và gửi về cho bạn. Đây là một trình tự xử lý dữ liệu single – thread, nghĩa là các bước được thực hiện theo một trình tự duy nhất. Mỗi yêu cầu sẽ được tạo một thread riêng.

Tuy nhiên, NGINX hoạt động theo kiến trúc bất đồng bộ (asynchronous) hướng sự kiện (event driven). Nó cho phép các threads tương đồng được quản lý trong một tiến process. Mỗi process hoạt động sẽ bao gồm các thực thể nhỏ hơn, gọi là worker connections dùng để xử lý tất cả threads.

Worker connections sẽ gửi các yêu cầu cho worker process, worker process sẽ gửi nó tới master process, và master process sẽ trả lời các yêu cầu đó. Đó là lý do vì sao một worker connection có thể xử lý đến 1024 yêu cầu tương tự nhau. Nhờ vậy, NGINX có thể xử lý hàng ngàn yêu cầu khác nhau cùng một lúc.

Các tính năng của NGINX là gì?

Máy chủ NGINX có nhiều tính năng và ưu điểm vượt trội trong lập trình

Máy chủ NGINX có nhiều tính năng và ưu điểm vượt trội trong lập trình

Tại sao nên sử dụng NGINX? Để trả lời câu hỏi này ta có thể kể đến các tính năng vượt trội của NGINX như sau:

  • Có thể xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp;
  • Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin;
  • Tăng tốc proxy ngược bằng bộ nhớ đệm (cache); cân bằng tải đơn giản và khả năng chịu lỗi;
  • Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uWSGI, SCGI, và các máy chủ memcached;
  • Kiến trúc modular; tăng tốc độ nạp trang bằng nén gzip tự động;
  • Hỗ trợ mã hoá SSLTLS;
  • Cấu hình linh hoạt; lưu lại nhật ký truy vấn;
  • Chuyển hướng lỗi 3XX-5XX;
  • Rewrite URL (URL rewriting) dùng regular expressions;
  • Hạn chế tỷ lệ đáp ứng truy vấn;
  • Giới hạn số kết nối đồng thời hoặc truy vấn từ 1 địa chỉ;
  • Khả năng nhúng mã PERL;
  • Hỗ trợ và tương thích với IPv6; Xem thêm bài viết IPv6 là gì?
  • Hỗ trợ WebSockets;
  • Hỗ trợ truyền tải file FLVMP4.

Khác biệt giữa Apache Server và NGINX server là gì?

So với Apache server, NGINX server có khá nhiều ưu điểm

So với Apache server, NGINX server có khá nhiều ưu điểm

Sự khác biệt cơ bản nhất của NGINX serverApache server  là trong cách kết nối được xử lý bởi hai phần mềm.

Trong khi Apache sử dụng cơ chế chia luồng (forked threaded), hoặc keep-alive, giữ một kết nối mở cho mỗi người dùng thì NGINX sử dụng một vòng lặp sự kiện không bị chặn (non-blocking event loop), giúp các kết nối vùng (pools connection) hoạt động không đồng bộ thông qua các tiến trình công việc. Nhờ đó, NGINX hỗ trợ CPURAM không bị ảnh hưởng bởi những thời điểm có lượng truy cập cao.

Bên cạnh đó, trong khi Apache server có thể xử lý cả nội dung tĩnh bằng cách sử dụng các phương pháp dựa trên file thông thường và nội dung động bằng cách nhúng một bộ xử lý của ngôn ngữ  thì NGINX chỉ xử lý được nội dung tĩnh. Vì vậy, cần phải cấu hình server này và bộ vi xử lý dựa trên những giao thức mà nó có thể kết nối được.

So với Apache, NGINX mang nhiều ưu điểm. NGINX sở hữu hầu hết các tính năng của Apache. Bên cạnh đó, nó có ưu thể hơn so với Apache nhờ tốc độ xử lý các truy vấn cực cao và hiệu suất sử dụng bộ nhớ máy chủ. Đặc biệt nhất chính là server này lại sử dụng rất ít Ram và CPU đối với một khối lượng truy vấn cực kỳ lớn.

Hướng dẫn kiểm tra NGINX của Website

Bạn có thể dựa vào các công cụ sẵn có để kiếm tra website có chạy NGINX

Bạn có thể dựa vào các công cụ sẵn có để kiếm tra website có chạy NGINX

Bạn có thể kiếm tra website có chạy NGINX hay không nhờ vào HTTP header. Bạn có thể sử dụng network tab trong Chrome Devtools để thấy HTTP header. Đối với các bạn chưa biết thì thao tác như sau:

  • Bạn mở trang cần kiểm tra trên Chrome
  • Nhấn tổ hợp phím Ctrl + Shift + I hoặc F12
  • Cửa sổ Chrome Devtools hiện lên
  • Tại đây nếu không thấy Network tab, bạn nhấp vào ” >> ” để thấy phần mở rộng của tabs và chọn Network.

Ngoài ra, bạn cũng có thể sử dụng Pingdom hoặc GTmetrix.

Hướng dẫn cài đặt NGINX Web server

Bạn có thể tự cài đặt NGINX Web server theo hướng dẫn của chúng tôi

Bạn có thể tự cài đặt NGINX Web server theo hướng dẫn của chúng tôi

Bước 1: Cài đặt bằng lệnh Yum

Sử dụng lệnh “yum install nginx -y”, start device bằng lệnh “service nginx start

Bước 2: Cài đặt Source

  • Cài đặt các package cần thiết, sử dụng các lệnh như sau:
 

  • Cài đặt thêm các thành phần phụ thuộc của NGINX bằng lệnh:
 

  • Download source NGINX tại: https://nginx.org/download/
  • Giải nén và truy cập đường dẫn source NGINX vừa giải nén.
  • Config từ script bằng lệnh:
 

  • Tạo user và phân quyền thư mục:
 

  • Tạo file để chạy lệnh:
 

  • Start Service NGINX
 

  • Truy cập vào đường dẫn chứa file config của NGINX
 

  • Backup lại file NGINX.conf
 

  • Sửa file cấu hình NGINX
 

  • Tạo thư mục chứa các file cấu hình virtualhost cho các website
 

Bước 3: Tiến hành cài đặt php

  • Sử dụng lệnh:
 

  • Cấu hình php-fpm
 

  • Truy cập vào đường dẫn chứa code chung của các website và tạo thư mục riêng chứa code của website, ví dụ: example.com
 

  • Truy cập đường dẫn chứa các file cấu hình của virtualhost
 

  • Backup file cấu hình default
 

  • Tạo virtualhost trong NGINX
 

  • Restart lại service NGINX
 

Cấu hình HTTPS trong NGINX

Dưới đây là hướng dẫn cấu hình HTTPS với NGINX

Dưới đây là hướng dẫn cấu hình HTTPS với NGINX

Bước 1: Cấu hình HTTPS cho NGINX Web Server: Trong config server, comment dòng listen trên cổng 80, chỉ để listen trên cổng 443.

Bước 2: Redirect tất cả các truy vấn tới HTTPS (Cho tất cả các domain)

Thêm một config server có nội dung như sau:

 

Trong đó, server_name là “_” có nghĩa là bao gồm tất cả các domain của bạn, và return 301 có nghĩa là bạn muốn cho google biết là bạn thay đổi dường dẫn vĩnh viễn về HTTPS.

Bước 3: Redirect chỉ domain của bạn

Thêm một config server có nội dung như sau:

 

Bước 4: Restart máy chủ NGINX và kiểm tra đường dẫn đã được chuyển sang HTTPS chưa.

Sử dụng NGINX làm Load Balancer

Đây là mô hình Load Balancer với NGINX

Đây là mô hình Load Balancer với NGINX

Bước 1: Config trên máy 10.10.10.1 như sau:

 

Trong đó 10.10.10.9 và 10.10.10.10 là 2 servers đang chạy dịch vụ ở cổng 9002.

Bước 2: Config để máy 10.10.10.1 này đón ở cổng 9000 như sau:

 

Bước 3:Start NGINX bằng lệnh: sudo service nginx restart

Bước 4: Sửa lại config với tham số weight như sau:

 

NGINX là máy chủ mới mã nguồn mở mang lại cho website nhiều lợi ích hơn so với các máy chủ khác. Hy vọng với những hướng dẫn của chúng tôi, bạn có thể dễ dàng thực hiện các thao tác đơn giản với web server của mình.