Nginx là gì? Tìm hiểu toàn tập về Nginx
Tìm hiểu về Nginx
Nginx là một máy chủ proxy ngược mã nguồn mở (open source reverse proxy server) sử dụng phổ biến giao thức HTTP, HTTPS, SMTP, POP3 và IMAP.
Nginx thường được chọn để cân bằng tải (load balancer), HTTP cache và máy chủ web (web server). 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.
Ngày càng được ưa chuộng và có mặt trên khắp các máy chủ Linux, Nginx hiện nay được sử dụng bởi 1- 4% tổng số lượng tên miền toàn thế giới, điển hình là Facebook, Microsoft, Google, Apple,…
Nginx ra đời và phát triển như thế nào?
Năm 2002, Igor Sysoev phát triển Nginx ban đầu và công bố lần đầu vào năm 2004. Tháng 7 năm 2011, công ty Nginx Inc được thành lập với trụ sở đầu tiên tại San Francisco, California, USA.
Nguyên lý hoạt động của Nginx
Không giống như các chương trình máy chủ khác, Nginx không dựa vào luồng (threads) để xử lý các truy vấn (request) mà theo kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous) và có khả năng mở rộng.
Nginx có tính năng gì?
Những tính năng của máy chủ HTTP Nginx
- Có khả năng 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 reverse proxy 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, wsgi, 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á SSL và TLS.
- 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
- Hỗ trợ WebSockets
- Hỗ trợ truyền tải file FLV và MP4
Những phương pháp xác thực máy chủ mail proxy của Nginx
Chúng ta có các phương pháp xác thực như sau:
- POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
- SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
Ngoài máy chủ mail proxy của Nginx còn hỗ trợ SSL, STARTTLS và STLS.
Ưu điểm và nhược điểm của Nginx
Ưu điểm của Nginx
- Nginx cung cấp cơ chế bộ nhớ đệm tốt hơn so với các máy chủ khác, giúp tăng hiệu suất của ứng dụng khi người dùng truy cập cùng một địa chỉ trong một khoảng thời gian ngắn.
- Nginx là máy chủ web trọng lượng nhẹ chuyển tiếp các yêu cầu người dùng đến máy chủ ứng dụng.
- Quy tắc ghi lại của Nginx mang lại sự linh hoạt hơn để định cấu hình chuyển hướng vĩnh viễn hoặc chuyển hướng tạm thời cho một số URL.
- Nginx hoạt động tốt nhất khi được làm máy chủ proxy giao diện người dùng cho bất kỳ ứng dụng nào.
- Nginx có thể dễ dàng tùy chỉnh, dễ dàng phân phối qua HTTPS, có thư mục tùy chỉnh hoặc máy chủ ngược dòng proxy.
Nhược điểm của Nginx
- Cân bằng tải là thứ mà Nginx cần cải thiện nhiều hơn so với các máy chủ khác.
- Giám sát của Nginx được đánh giá là tốt, nhưng chưa phải tốt nhất. Tức là Nginx phải cung cấp tính linh hoạt hơn trong việc định cấu hình nhiều tình huống hơn.
- Nginx cần cải thiện cơ chế lưu trữ, cung cấp các lệnh để có được đầu ra mong muốn từ các bản ghi.
- Rất khó để điều hướng giữa trang chủ Nginx và bộ phận hỗ trợ khách hàng.
Sự khác biệt giữa Nginx và Apache
- Apache là máy chủ HTTP mã nguồn mở, trong khi Nginx là máy chủ web không đồng bộ hiệu suất cao và máy chủ proxy ngược.
- Hỗ trợ, sửa lỗi và phát triển ứng dụng của Apache được quản lý và duy trì bởi cộng đồng người dùng trên khắp thế giới. Việc hỗ trợ và bảo trì của Nginx được thực hiện bởi một doanh nghiệp chủ quản.
- Sự khác biệt giữa cách xử lý yêu cầu khách hàng. Apache cung cấp nhiều Mô-đun đa xử lý các yêu cầu của máy khách và lưu lượng truy cập web, nhưng Nginx được thiết kế để xử lý nhiều yêu cầu của máy khách đồng thời với tài nguyên phần cứng tối thiểu
- Với Apache, một luồng chỉ được liên kết với một kết nối, trong khi Nginx có thể xử lý nhiều kết nối.
- Apache có kiến trúc đa luồng nhưng thiếu khả năng mở rộng. Mặt khác, Nginx tuân theo phương pháp tiếp cận hướng sự kiện không đồng bộ để xử lý nhiều yêu cầu của khách hàng.
- Apache cung cấp nội dung tĩnh bằng các phương pháp thông thường và xử lý nội dung động trong máy chủ web. Nginx thiếu khả năng xử lý nội dung trong nội bộ, dựa vào quy trình bên ngoài để thực thi.
- Hạn chế của Nginx Không hỗ trợ .htaccess
Bảng so sánh giữa Nginx và Apache
Để dễ hiểu hơn, TenTen sẽ dùng bảng so sánh trực quan nhé!
Nginx | Apache | |
Máy chủ | máy chủ web không đồng bộ hiệu suất cao và máy chủ proxy ngược | máy chủ HTTP mã nguồn mở |
Hỗ trợ | có đội ngũ chuyên nghiệp thực hiện | do cộng đồng hỗ trợ |
Đa luồng | Khả năng tiếp cận không đồng bộ xử lý đa luồng | có kiến trúc đa luồng nhưng khó có khả năng mở rộng |
Cung cấp nội dung tĩnh | dựa vào quy trình bên ngoài để thực thi và xử lý nội dung nội bộ kém | cung cấp nội dung bằng phương pháp thông thường và xử lý nội bộ dựa trên máy chủ web |
Khả năng xử lý cùng lúc | cùng lúc nhiều kết nối | chỉ một kết nối |
Khả năng xử lý yêu cầu của client | xử lý nhiều yêu cầu của máy khách đồng thời với tài nguyên phần cứng tối thiểu | cung cấp nhiều Mô-đun đa xử lý các yêu cầu của máy khách và lưu lượng truy cập web |
Cách cài đặt Nginx
Bước 1: Tải bản Nginx cho Windows ở link Nginx.org/en/download và giải nén.
Bước 2: Chạy Nginx bằng cách chạy file Nginx.exe.
Bạn cũng có thể sử dụng lệnh qua cmd để khởi động Nginx, reload hoặc stop Nginx.
Bước 3: Để quản lý Nginx bằng lệnh trong cmd, bạn nên đi đến thư mục root của Nginx, mở Command Prompt hoặc run cmd:
cd /d d:\Web\Nginx
Sau khi đã di chuyển đến thư mục root của Nginx, bạn có thể sử dụng các lệnh sau:
start Nginx # Khởi động Nginx Nginx -s stop # Dừng Nginx Nginx -s quit # Thoát Nginx, cái này là thoát hết ứng dụng Nginx đang chạy Nginx -s reload # Load lại Nginx khi bạn thay đổi cấu hình của Nginx Nginx -s reopen # Mở file logs
Bước 4: Sau khi khởi động Nginx, bạn hãy vào http://localhost
Ở bài viết trên, TenTen đã trình bày những thông tin sơ lược về Nginx, bạn có thể hiểu phần nào đó các quy tắc và nguyên lý hoạt động của Nginx. Mỗi máy chủ đều có những ưu và nhược điểm khác nhau, tùy thuộc vào nhu cầu, bạn có thể tìm hiểu và vận dụng một cách hiệu quả. Với nhiều tính năng mở rộng, Nginx có thể là một cách tuyệt vời để phục vụ ứng dụng của bạn!
Chúc các bạn thành công.
DỊCH VỤ CLOUD SERVER TỐC ĐỘ XỬ LÝ VƯỢT TRỘI