+3

Tổng quan về NGINX

Tổng quan

Bạn từng rơi vào trường hợp, bạn đã tạo ra một ứng dụng Web khá hay ho muốn chia sẻ cho mọi người sử dụng với mục đích thương mại hay chỉ đơn giản là public cho nhóm bạn sử dụng,...  và bạn nghĩ đến việc tìm một Web server cho việc lưu trữ (host) nó. Bạn lên Google search kết quả cho bạn một đống các web server Apache HTTP Server, Nginx , IIS, Google Server, ... bạn hoang mang nên chọn cái nào đây thì trong bài viết này tôi giới thiệu cho các bạn về NGINX.Chúng ta cùng đi tìm hiểu nhé

Ứng dụng của bạn có thể bao gồm nhiều tệp tin tĩnh (static files) — HTML, CSS và JavaScript, một backend phục vụ các API hoặc thậm chí nhiều webservice. NGINX có thể là cái bạn đang tìm kiếm và có một vài lý do cho điều đó.

I. Một số khái niệm bạn cần hiểu trước khi tìm hiểu sâu hơn về GNINX.

1. Reverse Proxy

Reverse Proxy đóng vai trò làm cầu nối giữa host (máy khách) và server (máy chủ). Nó nhận yêu cầu của máy khách và chuyển lên server và nhận phản hồi từ server để chuyển tới máy khách, cho nên phản hồi từ nó giống như là một máy chủ vậy.

Ưu điểm NGINX reverse proxy

  • Rất đơn giản để triển khai, đồng thời tạo tính bảo mật cao giúp ngăn chặn tấn công web server như DDoS và DoS
  • Nginx Reverse proxy giúp tạo cân bằng tải giữa nhiều server hạ tầng và là giải pháp caching cho những server chậm
  • Nginx không đòi hỏi thiết lập mới cho từng yêu cầu từ client. Nó mặc định dùng một process trên mỗi CPU
  • Nó hoạt động như là server reverse proxy cho các giao thức đa dạng: HTTP, HTTPS, TCP, UDP, SMTP, IMAP, và POP3
  • Nó có thể xử lý hơn 10000 kết nối nhưng chiếm ít dung lượng bộ nhớ. Nginx có thể vận hành nhiều web server khác nhau chỉ từ 1 IP và vẫn có thể phản hồi đúng kết quả tới đúng server trong mạng LAN
  • Nginx là một trong các web server tốt nhất cải thiện tốc độ load cho nội dung tĩnh. Hơn nữa, nó cũng hữu dụng khi đóng vai trò cache nội dung để thực hiện mã hóa SSL để giảm tải cho web server chính
  • Nó cũng hữu dụng để tối ưu nội dung và nén chúng để giảm thời gian tải
  • Nginx có thể thực hiện test A/B mà không cần đặt code JavaScript vào trong trang.

2. web service

web service là tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc giữa các hệ thống. Các ứng dụng phần mềm được viết bằng các ngôn ngữ lập trình khác nhau và chạy trên các nền tảng khác nhau, có thể sử dụng các dịch vụ web để trao đổi dữ liệu qua mạng máy tính (như Internet) theo cách tương tự như liên lạc giữa các quá trình trên một máy tính. Khả năng tương tác này (ví dụ: giữa các ứng dụng Java và Python hoặc Windows và Linux) là do việc sử dụng các tiêu chuẩn mở.

Có hai loại web service: SOAP web service. RESTful web service. 2 khái niệm này khá dài đề trình bày. Nên mình sẽ dành bài viết để nói về nó.

3. app service

  • App Service là một ứng dụng web/web api. Nó cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

II. NGINX là gì?

NGINX là một web server mạnh mẽ và sử dụng kiến trúc đơn luồng, hướng sự kiện vì thế nó hiệu quả hơn Apache server nếu được cấu hình chính xác. Nó cũng có thể làm những thứ quan trọng khác, chẳng hạn như load balancing, HTTP caching, hay sử dụng như một reverse proxy.

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

Trước khi tìm hiểu thêm về NGINX, hãy xem cách máy chủ web hoạt động. Khi người dùng mở một trang web, trình duyệt sẽ kết nối với máy chủ của trang web đó. Sau đó, máy chủ tìm kiếm các tệp được yêu cầu cho trang và gửi nó đến trình duyệt. Đây chỉ là loại yêu cầu đơn giản nhất.

Cách hoạt động của NGINX

NGINX được xây dựng để cung cấp việc sử dụng bộ nhớ thấp và đồng thời cao. Thay vì tạo các quy trình mới cho mỗi yêu cầu web, NGINX sử dụng cách tiếp cận theo hướng sự kiện, không đồng bộ trong đó các yêu cầu được xử lý trong một luồng.

Một số tính năng phổ biến được thấy trong NGINX bao gồm:

Reverse proxy với bộ nhớ đệm IPv6 Cân bằng tải Hỗ trợ FastCGI với bộ nhớ đệm WebSockets Xử lý tệp tĩnh, tệp chỉ mục và tự động lập chỉ mục TLS / SSL với SNI So Sánh NGINX và Apache

Đọc đến đây nhiều bạn sẽ đặt câu hỏi tại sao lại là Apache mà không là một web server nào khác thì câu trả lời đơn giản nhất cho câu hỏi này bởi vì Apache đứng top 1 trong bảng xếp hạng các máy chủ web phổ biến nhất theo số liệu của W3Techs(1/3/2020) với 39.4% và NGINX đứng ngay sau với 31.8%

Kiến trúc cơ bản

Apache được cấu hình theo kiểu “prefork”: nghĩa là có bao nhiêu request, có bấy nhiêu process (dù request đó là request hình ảnh, file .txt hay script .php. Đương nhiên với những file tĩnh (file .txt, file .css hay các file hình ảnh) cũng được Apache tạo process để xử lý nốt. Vì vậy, Apache tốn rất nhiều tài nguyên hệ thống.

Trong khi đó, NGINX được cấu hình theo kiểu bất đồng bộ (asynchronous): nghĩa là 1 NGINX process có thể xử lý nhiều request liên tục, dựa vào số lượng tài nguyên còn lại của hệ thống.

Nhờ kiểu cấu hình như vậy, NGINX có thể “nhúng” các file lập trình (như .php) vào process riêng của nó. Nghĩa là mọi request yêu cầu data được 1 process riêng của NGINX thực hiện, và trả data lại cho client bằng reverse proxy.

Bên cạnh đó, đối với những file tĩnh (file .txt, file .css hay các file hình ảnh), NGINX sẽ trả dữ liệu mà không cần sự can thiệp của các module server side.

IV. Nginx nhanh hơn Apache?

Câu trả lời là không hẳn vậy. Vì nó tùy thuộc vào cách định nghĩa “nhanh” của bạn. Đương nhiên nó không thể nhanh hơn tốc độ mạng được cho phép của bạn. Nhưng nó sẽ nhanh hơn trong trường hợp:

Load file tĩnh nhanh hơn: như đã nói, NGINX sẽ load file tĩnh mà không cần sự trợ giúp của các module server side. Chịu được nhiều request liên tục: vì tính “bất đồng bộ”, NGINX cố gắng hết khả năng không bỏ qua bất kì request nào. (Trong khi Apache chỉ nhận số lượng request nhất định đã được xác định trước, và loại bỏ số còn lại).

Do đó nếu bạn định nghĩa “nhanh” là “số lượng user liên tục request (cả request đến file tĩnh và động) mà server có thể xử lý” thì câu trả lời là có.

Trên đây sơ lược qua về NGINX , ở phần tiếp theo mình sẽ đi vào phần cài đặt cũng như cấu hình NGINX .Nếu các bạn thấy NGINX phù hợp với tiêu chí chọn server của mình thì hãy đón đọc phần tiếp theo.

V. Tài liệu tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí