Nginx là gì?
Nginx là một chương trình server HTTP, một reverse proxy cũng như IMAP/POP3 proxy server miễn phí, mã nguồn mở, có hiệu năng cao. Hiện Nginx được sử dụng bởi 1- 4% tổng số lượng tên miền toàn thế giới. Mặc dù còn ở giai đoạn Beta, Nginx được biết đến bởi sự ổn định cao, nhiều tính năng, cấu hình đơn giản và tiết kiệm tài nguyên.
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.
Tính năng chính của 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, 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á 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.
NGINX server hoạt động như thế nào?
Trước khi học về NGINX, chúng ta cần biết cách web server hoạt động thế nào đã. Ví dụ như, khi ai đó gửi một yêu cầu để mở một trang web. Trình duyệt sẽ liên lạc với server chứa website đó. Sau đó, server sẽ tìm kiếm đúng file yêu cầu của trang đó và gửi ngược về cho server. Đây là một loại truy vấn đơn giản nhất.
Ví dụ trên được xem như là một single thread – một bộ các bước xử lý dữ liệu được thực thi theo 1 trình tự duy nhất. Web server truyền thống tạo một thread cho mỗi yêu cầu (request). NGINX thì hoạt động theo một cách khác. Nó hoạt động theo kiến trúc bất đồng bộ (asynchronous), hướng sự kiện (event driven). Kiến trúc này có thể hiểu là những threads tương đồng nhau sẽ được quản lý trong một tiến trình (process), và mỗi tiến trình hoạt động chưa các thực thể nhỏ hơn gọi là worker connections. Cả bộ đơn vị này chịu trách nhiệm xử lý các threads.
Worker connections sẽ gửi các truy vấn cho một worker process, worker process sẽ gửi nó tới process cha (master process). Cuối cùng, master process sẽ trả kết quả cho những yêu cầu đó.
Điều này có vẻ đơn giản, một worker connection có thể xử lý đến 1024 yêu cầu tương tự nhau. Vì vậy, NGINX có thể xử lý hàng ngàn yêu cầu mà không gặp rắc rối gì. Đây cũng là lý do vì sao NGINX tỏ ra hiệu quả hơn khi hoạt động trên môi trường thương mại điện tử, trình tìm kiếm, và cloud storage.
Cài đặt Nginx Web Server
VIệc cài đặt chương trình web server Nginx khá là đơn giản. Bạn có thể cài qua các repository của OS Linux, biên dịch mã nguồn Nginx,…
CentOS
yum install nginx -y
yum install nginx -y
Ubuntu
sudo apt-get install nginx -y
sudo apt-get install nginx -y
File cấu hình Nginx
Tuỳ thuộc vào việc bạn cài đặt Nginx từ Repository Nginx/OS hoặc cài qua hình thức biên dịch mã nguồn Nginx ta sẽ có các vị trí file cấu hình Nginx như sau :
/etc/nginx/nginx.conf
/usr/local/etc/nginx/nginx.conf
/usr/local/nginx/conf/nginx.conf