Nginx là gì?
Nginx là một sản phẩm mã nguồn mở dành cho web server. Dự án Nginx được phát hành và sử dụng như một web server được thiết kế hướng đến mục đích cải thiện tối đa hiệu năng và sự ổn định nhằm nâng cao hiệu suất xử lý khi sử dụng lượng RAM thấp.
Bên cạnh đó, NGINX còn có thể hoạt động như một proxy server cho email (IMAP, POP3, và SMTP), reverse proxy, và làm load balancer để cân bằng tải cho các máy chủ HTTP, TCP, và UDP.
Những công ty lớn sử dụng Nginx bao gồm: Autodesk, Atlassian, Intuit, T-Mobile, GitLab, DuckDuckGo, Microsoft, IBM, Google, Adobe, Salesforce, VMWare, Xerox, LinkedIn, Cisco, Facebook, Target, Citrix Systems, Twitter, Apple, Intel và rất nhiều công ty khác.
Khả năng của Nginx
Với mục tiêu của Nginx là tối ưu hóa hiệu suất, nên nó thường vượt mặt các máy chủ web phổ biến khác trong các bài kiểm tra chất lượng benchmark. Đặc biệt trong các trường hợp cần phục vụ nội dung tĩnh (file hình ảnh, css, js, text,..) hoặc các yêu cầu truy vấn đồng thời số lượng lớn (high concurrent request).
Nginx còn là 1 trong số ít những máy chủ được viết để giải quyết vấn đề C10K (mỗi máy chủ web phải có khả năng xử lý 10.000 khách hàng cùng một lúc). Hiểu đơn giản thì do các máy chủ web truyền thống xử lý các yêu cầu dựa trên luồng (thread), điều này dẫn đến việc thiếu hụt tài nguyên cấp cho các luồng xử lý. Nginx sử dụng 1 kiến trúc bất đồng bộ hướng sự kiện linh hoạt, có thể triển khai nội dung của các trang web động bằng cách sử lý FastCGI, SCGI cho các scripts.
Theo thống kê của Netcraft, trong số 1 triệu website lớn nhất thế giới, có 6,52% sử dụng nginx. Tại Nga, quê hương của nginx, có đến 46,9% sử dụng máy chủ này.
Tính năng của Nginx
Hiện nay, máy chủ HTTP Nginx sở hữu nhiều tính năng nổi bật như:
- Tạo ra khả năng xử lý hơn đến 10.000 kết nối cùng một lúc với các bộ nhớ thấp.
- Hỗ trợ phục vụ các tập tin tĩnh và lập ra các chỉ mục tập tin phù hợp.
- Có khả năng tăng tốc reverse proxy bằng các bộ nhớ đệm giúp cân bằng tải đơn giản hơn với khả năng chịu lỗi vô cùng cao.
- Nginx có thể hỗ trợ tăng tốc cùng với bộ nhớ FastCGI, uwsgi, SCGI và những máy chủ memcached vô cùng hiệu quả.
- Kiến trúc modular cho phép bạn gia tăng tốc độ nạp trang bằng biện pháp nén gzip một cách tự động.
- Nginx có khả năng hỗ trợ thực hiện mã hóa SSL và TLS.
- Cấu hình của Nginx vô cùng linh hoạt giúp lưu lại nhật ký truy vấn một cách dễ dàng.
- Nginx có khả năng chuyển hướng lỗi 3XX-5XX.
- Rewrite URL có thể sử dụng expression.
- Nginx có thể hạn chế tỷ lệ đáp ứng của truy vấn.
- Nginx giúp giới hạn số kết nối đồng thời cũng như truy vấn từ 1 địa chỉ.
- Nginx có khả năng nhúng mã PERL một cách dễ dàng.
- Nginx có thể hỗ trợ và tương thích hoàn toàn với IPv6.
- Nginx có thể hỗ trợ cho websockets.
- Nginx hỗ trợ truyền tải các file FLV và MP4.
5. So sánh Nginx và Apache
Chúng ta sẽ cùng thực hiện so sánh một giữa 2 Web Servers phổ biến bậc nhất hiện nay xem sao nhé:
Đặc điểm | Nginx | Apache |
---|---|---|
Hệ điều hành hỗ trợ | Chạy trên một số Unix hiện đại. Hỗ trợ một số tính năng cho Windows, tuy nhiên, hiệu suất hoạt động không mạnh như Apache. | Chạy trên tất cả các loại hệ thống Unix-like và hỗ trợ đầy đủ cho Windows. |
Hỗ trợ người dùng | Chạy trên tất cả các loại hệ thống Unix-like và hỗ trợ đầy đủ cho Windows. | Thiếu sự hỗ trợ người dùng từ phía công ty (Apache Foundation) |
Nội dung tĩnh | Có khả năng xử lý đến 1000 kết nối với nội dung tĩnh nhanh gấp 2.5 lần so với Apache. Sử dụng ít bộ nhớ hơn. | Xử lý cùng lúc ít kết nối và tốc độ không được nhanh như Nginx. |
Khả năng tương thích | Vào năm 2016, Nginx mới bắt đầu hỗ trợ cho Dynamic Module. | Có lợi thế hơn do Apache được cung cấp Dynamic Module từ rất lâu. |
Thế mạnh | website chứa nội dung tĩnh, nội dung động không tạo ra sự khác biệt giữa các máy chủ. | Tính linh hoạt cao, với tệp .htaccess của Apache và các mô-đun động. |
Phù hợp | VPS và dedicated hosting | Shared hosting user |
Cài đặt Nginx
Cài đặt từ gói:
sudo apt install nginx
Để cài từ repo có thể tham khảo tại trang chủ.
Khởi chạy dịch vụ:
systemctl start nginx
systemctl enable nginx
Sau đó bạn chỉ cần vào trình duyệt gõ http://<ip_web_server> sẽ thấy trang web mặc định của nginx.
Thư mục mặc định chứa file cấu hình Nginx: /etc/nginx/nginx.conf, gồm setup user, process, log, event và gọi tất cả file trong conf.d
Có 1 file mẫu setup web server, listen ở: /etc/nginx/conf.d/default.conf, file này chỉ setup server, mặc định chỉ hỗ trợ chạy static web html và đã được include trong file cấu hình mặc định
Thư mục mặc định chứa file web Nginx: /usr/share/nginx/html