NỘI DUNG

NGINX là gì? Giới thiệu tổng quan về Máy Chủ Web NGINX

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:23/04/2025
Lượt xem

Đánh giá

5/5 - (70 bình chọn)

NGINX – Phần mềm mã nguồn mở đa năng dành cho web server, reverse proxy, caching, load balancing và media streaming. Với hiệu suất và ổn định cao, NGINX là công cụ quan trọng trong ngành công nghệ thông tin. Cùng mình khám phá NGINX là gì và mọi thông tin hữu ích về NGINX ngay trong bài viết sau.

Những điểm chính

  • NGINX là gì: Hiểu được NGINX là một web server mã nguồn mở hiệu suất cao, đa năng, vượt trội so với các web server khác, nắm được vị thế dẫn đầu của NGINX trong thị trường web server hiện nay. 
  • Lịch sử hình thành và phát triển của NGINX: Nắm được các mốc phát triển quan trọng của NGINX.
  • Cách thức hoạt động của NGINX: Hiểu được kiến trúc hướng sự kiện, bất đồng bộ của NGINX, giúp xử lý hàng ngàn kết nối đồng thời hiệu quả và tiết kiệm tài nguyên. 
  • Tính năng của NGINX: Biết được các tính năng nổi bật của NGINX như xử lý kết nối lớn, reverse proxy, cân bằng tải, hỗ trợ SSL/TLS, HTTP/2,… 
  • Ưu và nhược điểm của NGINX: So sánh ưu nhược điểm của NGINX để lựa chọn phù hợp với nhu cầu.
  • So sánh NGINX và Apache Server: So sánh chi tiết NGINX và Apache, hai web server phổ biến nhất, về phương thức xử lý kết nối, hiệu năng, hệ điều hành hỗ trợ,… 
  • Hướng dẫn cài đặt NGINX: Hướng dẫn chi tiết cài đặt NGINX từ gói dựng sẵn và từ source. 
  • Cấu hình NGINX chi tiết: Hướng dẫn cấu hình các file nginx.conf và cấu hình host ảo. 
  • Hướng dẫn cấu hình HTTPS trong NGINX: Biết cách cách kích hoạt HTTPS trên NGINX, bao gồm chuẩn bị chứng chỉ SSL và cấu hình. 
  • Khởi động NGINX: Hướng dẫn khởi động, tải lại và kiểm tra trạng thái NGINX. 
  • Hướng dẫn sử dụng NGINX để Load Balancer: Biết cách cấu hình NGINX để cân bằng tải, tăng tính sẵn sàng và hiệu suất hệ thống. 
  • Hướng dẫn kiểm tra NGINX trên website: Hướng dẫn kiểm tra hoạt động của NGINX trên website, đảm bảo NGINX hoạt động đúng và ổn định.
  • NGINX phục vụ web: Giải thích cách NGINX được sử dụng trong các tác vụ web khác nhau như reverse proxy, cân bằng tải, web accelerator. 
  • NGINX và NGINX Plus: So sánh phiên bản miễn phí và thương mại của NGINX, giúp lựa chọn phiên bản phù hợp. 
  • Hướng dẫn sử dụng NGINX hiệu quả: Chia sẻ các mẹo và kỹ thuật để tối ưu hiệu suất NGINX.
  • Giới thiệu Vietnix: Biết đến Vietnix là nhà cung cấp hosting và VPS uy tín.
  • Các câu hỏi thường gặp: Giải đáp các thắc mắc thường gặp về NGINX.

NGINX là gì? 

NGINX là một web server mã nguồn mở hiệu suất cao, được xây dựng với kiến trúc đơn luồng và hướng sự kiện (event-driven, asynchronous) giúp xử lý hàng nghìn kết nối đồng thời mà vẫn tiết kiệm tài nguyên hệ thống. Không chỉ đóng vai trò là web server, NGINX còn đảm nhiệm các chức năng quan trọng khác như reverse proxy, HTTP caching, load balancing, media streaming và proxy cho các giao thức email như IMAP, POP3 và SMTP.

NGINX là gì?
NGINX là gì?

So với các web server khác như Apache, NGINX vượt trội về hiệu suất và khả năng xử lý yêu cầu với mức tiêu thụ tài nguyên thấp hơn. Theo khảo sát của Netcraft vào tháng 1/2024, NGINX dẫn đầu thị phần web server với 23,21%, vượt mặt Apache (20,70%) và Cloudflare (10,99%). Trong khi đó, Wappalyzer ghi nhận NGINX đang được sử dụng trên 40% trang web toàn cầu, tiếp tục khẳng định vị thế là công nghệ web server phổ biến nhất hiện nay.

Lịch sử hình thành và phát triển của NGINX

NGINX được phát triển bởi Igor Sysoev vào năm 2002 với mục tiêu giải quyết vấn đề C10K – thách thức xử lý 10.000 kết nối đồng thời mà các server truyền thống lúc bấy giờ gặp khó khăn. Với kiến trúc đơn luồng, hướng sự kiện (event-driven, asynchronous), NGINX đã tạo ra một cuộc cách mạng trong cách các máy chủ hoạt động, giúp tăng hiệu suất xử lý và giảm tiêu thụ tài nguyên đáng kể.

Những cột mốc phát triển quan trọng:

  • 2004: NGINX ra mắt dưới dạng mã nguồn mở, nhanh chóng thu hút sự chú ý nhờ hiệu suất và khả năng mở rộng.
  • 2008: NGINX 1.0 ra mắt, đánh dấu bước tiến quan trọng về tính ổn định và tin cậy.
  • 2011: Công ty NGINX, Inc. được thành lập tại San Francisco, Hoa Kỳ, nhằm hỗ trợ phát triển và thương mại hóa NGINX. Cũng trong thời điểm này, NGINX, Inc. giới thiệu phiên bản thương mại NGINX Plus với các tính năng nâng cao dành cho doanh nghiệp.
  • 2013: Igor Sysoev, người sáng lập NGINX, rời vị trí CTO tại Rambler để đảm nhận vai trò CTO tại NGINX, Inc.
  • 2016: F5 Networks mua lại NGINX, Inc. với giá trị hơn 670 triệu USD, đánh dấu một bước ngoặt quan trọng trong sự phát triển của NGINX.
  • 2019: Phát hành các phiên bản NGINX 1.16 và 1.17 với nhiều cải tiến về hiệu suất và tính năng.

NGINX không chỉ dừng lại ở vai trò web server mà đã phát triển thành một giải pháp toàn diện, hỗ trợ các công nghệ web hiện đại như WebSocket, HTTP/2 và streaming nhiều định dạng video. NGINX còn được ứng dụng rộng rãi như reverse proxy, load balancing, HTTP caching, media streaming và email proxy, trở thành một công cụ không thể thiếu trong quản lý, tối ưu các hệ thống web và mạng quy mô lớn.

Cách thức hoạt động của web server NGINX

Web server NGINX hoạt động theo kiến trúc bất đồng bộ và hướng sự kiện, khác biệt với các web server truyền thống. Thay vì tạo thread cho mỗi yêu cầu, NGINX quản lý worker connections trong một tiến trình gọi là worker process. 

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

Nhờ cách tiếp cận này, NGINX có thể xử lý hàng ngàn yêu cầu đồng thời mà không gặp vấn đề. Điều này làm cho NGINX trở nên hiệu quả đặc biệt trong lĩnh vực thương mại điện tử, công cụ tìm kiếm và lưu trữ đám mây. Sự mạnh mẽ và hiệu quả này đã khẳng định vị thế của NGINX trong ngành công nghệ thông tin.

Nginx có tính năng gì?

Những tính năng nổi bật của máy chủ HTTP Nginx

  • Khả năng xử lý lớn với hơn 10.000 kết nối cùng một thời điểm với bộ nhớ thấp.
  • Phục vụ cho các tập tin tĩnh (static files) và thực hiện lập chỉ mục tập tin.
  • Gia tăng tốc độ reverse proxy thông qua bộ nhớ đệm (cache).
  • Cân bằng quá trình tải đơn giản cùng khả năng chịu lỗi.
  • Giúp nâng cao tốc độ cùng bộ nhớ đệm của FastCGI, uwsgi, SCGI, và loạt máy chủ memcached.
  • Hỗ trợ Kiến trúc modular, nâng cao tốc độ nạp trang thông qua nén gzip tự động.
  • Giúp mã hoá SSL cùng TLS.
  • Cấu hình rất linh hoạt; sao lưu nhật ký truy vấn.
  • NGINX có tính năng chuyển hướng lỗi 3XX-5XX
  • Rewrite URL (URL rewriting) sử dụng regular expressions.
  • Làm giảm tỷ lệ đáp ứng truy vấn.
  • Kiểm soát các kết nối cùng một thời điểm và những truy vấn cùng 1 địa chỉ.
  • Có khả năng nhúng mã PERL.
  • Được hỗ trợ và tương thích trên IPv6.
  • Được hỗ trợ ở WebSockets.
  • Khả năng truyền tải file FLV và MP4.

Những tính năng tiêu biểu của máy chủ mail proxy của Nginx

Gồm 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;
  • Hỗ trợ SSL, STARTTLS cùng STLS.

Ưu nhược điểm của Nginx

Ưu điểm
  • default icon

    Hiệu suất và tốc độ xử lý cao: Nhờ kiến trúc bất đồng bộ (asynchronous) và không chặn (non-blocking), NGINX có thể xử lý hàng nghìn kết nối đồng thời mà vẫn đảm bảo hiệu suất ổn định, đặc biệt với các tệp tĩnh như HTML, CSS, JS, hình ảnh,…

  • default icon

    Tiêu thụ tài nguyên thấp: NGINX sử dụng ít RAM và CPU, cải thiện hiệu suất ngay cả trên máy chủ cấu hình thấp.

  • default icon

    Cân bằng tải (Load Balancing): Tính năng cân bằng tải tích hợp giúp phân phối lưu lượng đều đến các máy chủ backend, tăng khả năng sẵn sàng và giảm tải cho từng máy chủ.

  • default icon

    Reverse Proxy: NGINX là một reverse proxy hiệu quả, ẩn máy chủ backend, tăng cường bảo mật và hiệu suất.

  • default icon

    Hỗ trợ SSL/TLS mạnh mẽ: Hỗ trợ HTTP/2 và TLS 1.3, đảm bảo tốc độ và bảo mật truyền tải dữ liệu.

  • default icon

    Khả năng mở rộng linh hoạt: Dễ dàng cấu hình để mở rộng hệ thống từ đơn giản đến phức tạp.

  • default icon

    Caching hiệu quả: Bộ nhớ đệm (cache) tích hợp giúp tăng tốc tải trang và giảm tải cho backend.

  • default icon

    Hỗ trợ giao thức hiện đại: Hỗ trợ WebSocket, HTTP/2, gRPC và nhiều giao thức hiện đại khác.

  • default icon

    Cộng đồng lớn và tài liệu phong phú: Dễ dàng tìm kiếm hỗ trợ và giải quyết vấn đề.

Nhược điểm
  • default icon

    Cấu hình phức tạp: Cấu hình ban đầu có thể khó khăn cho người mới do cú pháp riêng và yêu cầu hiểu biết về các directive.

  • default icon

    Khả năng mở rộng tính năng hạn chế: So với Apache, NGINX có ít module tích hợp và không hỗ trợ trực tiếp tải thêm module, có thể gây hạn chế trong một số trường hợp.

  • default icon

    Ghi log và xử lý lỗi: Quản lý log và xử lý lỗi chưa trực quan như Apache, gây khó khăn khi debug và phân tích sự cố.

  • default icon

    Hỗ trợ PHP qua FastCGI: Yêu cầu cấu hình PHP thông qua FastCGI (thường là PHP-FPM), thêm bước cấu hình và có thể khó khăn cho người mới.

  • default icon

    Thiếu tính tương thích với một số ứng dụng cũ: Một số ứng dụng cũ hoặc ứng dụng thiết kế cho Apache (sử dụng .htaccess) có thể không tương thích, cần chuyển đổi hoặc cấu hình lại.

  • default icon

    Quản lý và giám sát phức tạp trong môi trường lớn: Giám sát hiệu suất và kết nối trong hệ thống lớn phức tạp hơn do hạn chế trong việc cung cấp thông tin chi tiết.

So sánh NGINX và Apache Server

Điểm giống nhau

Cả NGINX và Apache đều là hai web server phổ biến nhất hiện nay với một số điểm chung như:

  • Hỗ trợ đa nền tảng: Có thể chạy trên hầu hết các hệ điều hành dựa trên UNIX.
  • Cộng đồng hỗ trợ mạnh: Đều có tài liệu phong phú, diễn đàn, mailing list và được hỗ trợ rộng rãi trên Stack Overflow.
  • Bảo mật tốt: Cả hai đều có khả năng bảo vệ mã nguồn và hệ thống khỏi các lỗ hổng bảo mật phổ biến.
  • Xử lý PHP hiệu quả: NGINX sử dụng PHP thông qua PHP-FPM, hiệu quả tương đương Apache dùng module PHP-FPM.
  • Hiệu năng tốt với nội dung động: Cả hai đều cho hiệu suất tương đương khi xử lý các nội dung động.
  • Thời gian thực thi PHP tương đồng: Không có sự khác biệt rõ rệt trong thời gian chạy mã PHP.
  • Cộng đồng sử dụng lớn: Cả hai đều có cộng đồng phát triển và người dùng đông đảo.

Điểm khác nhau

Tiêu chíNGINXApache
Phương thức xử lý kết nốiSử dụng kiến trúc hướng sự kiện, không đồng bộ (event-driven, asynchronous) giúp xử lý đồng thời lượng lớn kết nối hiệu quả.Sử dụng kiến trúc phân luồng (threading) hoặc keep-alive.
Hiệu năngVượt trội hơn Apache trong việc phục vụ nội dung tĩnh và xử lý số lượng lớn kết nối đồng thời.Xử lý đồng thời ít kết nối hơn và tốc độ phục vụ nội dung tĩnh không nhanh bằng NGINX.
Hệ điều hành hỗ trợChạy tốt trên Linux/Unix, có hỗ trợ Windows nhưng hiệu suất không cao.Chạy tốt trên cả Linux/Unix và Windows.
Khả năng tương thích và tính linh hoạtNGINX bắt đầu hỗ trợ Dynamic Module từ năm 2016.Apache có lợi thế hơn về khả năng mở rộng với Dynamic Module, đã được hỗ trợ từ lâu.
Tài nguyên tiêu thụNGINX tiêu thụ ít tài nguyên (CPU, RAM) hơn Apache, đặc biệt khi xử lý nhiều kết nối đồng thời.Tốn nhiều tài nguyên hơn khi có nhiều request.

Khi nào nên dùng NGINX, khi nào nên dùng Apache?

Dùng NGINX khi:

  • Website có lượng truy cập cao và cần xử lý nhiều kết nối đồng thời.
  • Ứng dụng web có nhiều nội dung tĩnh (hình ảnh, CSS, JS…). Hosting NGINX được tối ưu cho việc phục vụ nội dung tĩnh.
  • Muốn tối ưu hiệu suất trên VPS hoặc máy chủ riêng (dedicated server). VPS NGINX cung cấp hiệu suất vượt trội trong môi trường máy chủ riêng.
  • Không cần sử dụng .htaccess hoặc module mở rộng quá phức tạp.

Dùng Apache khi:

  • Dự án yêu cầu tính linh hoạt cao, sử dụng nhiều module tùy chỉnh.
  • Cần hỗ trợ tốt cho các ứng dụng cũ (đặc biệt dùng .htaccess).
  • Triển khai trên shared hosting.

Để website luôn hoạt động ổn định và đáp ứng tốt với lưu lượng truy cập, việc lựa chọn dịch vụ lưu trữ phù hợp là rất quan trọng. Nếu bạn đang tìm kiếm giải pháp cho website có lượng truy cập lớn và cần hiệu suất cao, các gói VPS tốc độ cao của Vietnix sẽ là lựa chọn lý tưởng. Với tài nguyên mạnh mẽ và khả năng tùy chỉnh linh hoạt, VPS Vietnix giúp website của bạn xử lý lượng lớn kết nối đồng thời một cách mượt mà.

Ngược lại, nếu website của bạn có quy mô nhỏ hơn và ưu tiên sự tiện lợi, các gói hosting tốc độ cao của Vietnix với công nghệ tiên tiến cũng sẽ đảm bảo tốc độ tải trang nhanh chóng và ổn định cho người dùng.

Mô hình kết hợp NGINX và Apache

Trong nhiều trường hợp, bạn hoàn toàn có thể kết hợp cả NGINX và Apache để tận dụng thế mạnh của từng web server. Cụ thể:

NGINX có thể hoạt động như một reverse proxy phía trước Apache. NGINX xử lý nội dung tĩnh và chuyển tiếp các yêu cầu nội dung động đến Apache. Mô hình này tận dụng ưu điểm của cả hai, đó là hiệu suất xử lý nội dung tĩnh của NGINX và tính linh hoạt của Apache.

So sánh NGINX và Apache
So sánh NGINX và Apache

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

Để cài đặt NGINX, bạn có thể sử dụng 2 cách như sau:

  • Dùng gói (package) dựng sẵn.
  • Cài đặt từ source.

Cách đầu tiên được nhận xét là đơn giản và nhanh chóng hơn, nhưng cài đặt từ source sẽ mang đến khả năng cài đặt thêm các module khác làm cho NGINX trở nên vượt trội hơn. Người dùng được phép tùy chỉnh sao cho phù hợp với nhu cầu của ứng dụng.

Thao tác duy nhất bạn cần thực hiện để cài đặt một gói Debian dựng sẵn là:

sudo apt-get update
sudo apt-get install nginx

Sau khi hoàn thành quá trình cài đặt, bạn có thể kiểm tra tất cả đã ổn hay chưa thông qua lệnh sau, sẽ hiển thị phiên bản NGINX vừa được cài đặt:

sudo nginx -v
nginx version: nginx/1.18.2

Web Server mới được cài đặt ở /etc/nginx/. Khi bạn truy cập vào thư mục này, sẽ có nhiều tệp tin cùng thư mục xuất hiện. Tuy nhiên, thứ bạn cần lưu ý nhất đó chính là tệp tin nginx.conf và thư mục sites-available.

Cấu hình NGINX chi tiết

Dưới đây là thiết lập cần được chú ý tại tập tin nginx.conf:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

Tệp tin sẽ được cấu trúc nên các ngữ cảnh. Thứ nhất là events, tiếp theo là http. Cấu trúc được nhận xét là rất có ích trong việc cấu hình, như từng ngữ cảnh sẽ được chèn trong ngữ cảnh khác. Ngoài ra, còn được thừa hưởng tất cả từ cha mẹ của chúng nhưng cũng được phép ghi đè lên chúng nếu cần thiết.

Ở tập tin này bạn có thể tùy chỉnh chúng theo nhu cầu, tuy nhin bạn cũng có thể tận dụng các thiết lập mặc định. Tập tin này có một số thành phần quan trọng như sau:

  • worker_processes: Đây là một thiết lập dùng để định nghĩa worker processes mà NGINX sẽ dùng. Do NGINX là đơn luồng (single threaded), nên nó thường bằng lượng lõi CPU.
  • worker_connection: Đây chính là lượng kết nối tối đa trong một thời điểm cho mỗi worker process và thông báo đến những worker process của chúng ta số lượng người có thể phục vụ cùng lúc bởi NGINX.
  • access_log & error_log: Đây là những tệp tin mà NGINX sẽ sử dụng để log bất kỳ lỗi và số lần truy cập. Các bản ghi này thường được sử dụng để gỡ lỗi hoặc sửa chữa.
  • gzip: Thành phần này là các thiết lập nén GZIP của các NGINX reponse. Tại đây có chứa nhiều thiết lập phụ, phần bị comment do mặc định làm cho hiệu suất gia tăng đáng kể. Tại những thiết lập phụ của GZIP, bạn cần lưu ý tới gzip_comp_level, đây chính là mức nén nằm ở khoảng từ 1 – 10. Hầu hết, giá trị này sẽ hiếm khi lớn hơn 6 — vì lợi ích sẽ không bao nhiêu nếu trên mức này, do nó cần dùng nhiều CPU hơn. gzip_types chính là một danh sách dạng response sẽ được nén.

Số lượng website được NGINX hỗ trợ có thể nhiều hơn 1, cùng những tệp tin định nghĩa các website của bạn nằm ở thư mục /etc/nginx/sites-available.

Lưu ý rằng, những tệp tin nằm ở thư mục này không “live” — bạn có thể có nhiều tệp tin định nghĩa các trang web ở đây, nhưng NGINX không tác động đến chúng cho đến khi được symlink (liên kết tượng trưng) tới thư mục /etc/nginx/sites-enabled (hoặc có thể sao chép chúng đến thư mục này, nhưng symlink chắc chắn rằng chỉ có một bản sao chép trên một tệp tin được theo dõi).

Nó mang đến cho bạn giải pháp nhanh nhất đưa các website online và offilne mà không phải tiến hành xóa bỏ tập tin nào — Đến lúc bạn hoàn tất chuẩn bị cho trang web, tạo symlink đến sites-enabled, sau đó khởi động lại NGINX.

Thư mục site-available sẽ chứa cấu hình cho các host ảo (virtual host). Tại đây, web server được phép cấu hình các website với các từng cấu hình khác nhau. Những website trong thư mục không live và và chỉ được đồng ý nếu chúng ta tạo một symlink đến thư mục sites-enabled.

Người dùng dược phép tạo một tệp tin mới hoặc tùy chỉnh một tệp tin mặc định cho ứng dụng. Dưới đây là một cấu hình thông thường:

upstream remoteApplicationServer {
    server 10.10.10.10;
}

upstream remoteAPIServer {
    server 20.20.20.20;
    server 20.20.20.21;
    server 20.20.20.22;
    server 20.20.20.23;
}


server {
    listen 80;
    server_name www.customapp.com customapp.com
    root /var/www/html;
    index index.html

        location / {
            alias /var/www/html/customapp/;
            try_files $uri $uri/ =404;
        }

        location /remoteapp {
            proxy_set_header   Host             $host:$server_port;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://remoteAPIServer/;
        }

        location /api/v1/ {
            proxy_pass https://remoteAPIServer/api/v1/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_redirect http:// https://;
        }
}

Tương tự nginx.conf, nó cũng dùng định nghĩa các ngữ cảnh lồng nhau (đồng thời mọi thứ cũng được lồng trong ngữ cảnh HTTP CỦA nginx.conf, do đó chúng thừa hưởng tất cả từ nó).

Ngữ cảnh server định nghĩa một server ảo dùng để xử lý hết các request do client yêu cầu. Sẽ có nhiều khối server, NGINX sẽ tiến hành lựa chọn trong số đó dựa theo những chỉ thị listen và server_name.

Ở mỗi khối server, chúng ta định nghĩa lượng lớn ngữ cảnh location sẽ được áp dụng để quyết định phương thức xử lý các request cho client. Theo đó, khi nhận được request, NGINX sẽ thử khớp URI tới tới những định nghĩa location và xử lý theo cách hợp lý nhất.

Trong ngữ cảnh location sẽ có nhiều chỉ thị quan trọng được dùng tới, ví dụ như:

  • try_files sẽ phục vụ các tệp tin tĩnh được tìm thấy ở thư mục được trỏ tới do chỉ thị gốc.
  • proxy_pass thực hiện mang request đến proxy server xác định.
  • rewrite thực hiện viết lại URI đến thông qua một regular expression để đạt được một khối location có thể xử lý nó.

Ngữ cảnh upstream định nghĩa một pool của những server cái NGINX sẽ ủy quyền những request tới. Sau khi hoàn tất việc tạo khối upstream và định nghĩa một server nằm trong nó chúng có thể xác thực nó thông qua tên nằm trong các khối location. Ngoài ra, một ngữ cảnh upstream có thể sẽ chứa nhiều server được gán tại đó bởi vì NGINX sẽ làm một vài load balancing khi ủy quyền cho các request tới.

Hướng dẫn cấu hình HTTPS trong NGINX

Để kích hoạt HTTPS trên NGINX, bạn cần làm theo các bước sau:

Chuẩn bị chứng chỉ SSL

Trước tiên, bạn cần có chứng chỉ SSL hợp lệ. Có hai cách phổ biến để có được chứng chỉ:

  • Sử dụng chứng chỉ SSL từ các tổ chức chứng nhận (CA) như Let’s Encrypt, Sectigo,…
  • Tự tạo chứng chỉ SSL (self-signed) bằng công cụ như OpenSSL để sử dụng trong môi trường phát triển nội bộ.

Một chứng chỉ SSL gồm hai thành phần:

  • Khóa riêng (Private Key).
  • Chứng chỉ công khai (Certificate).

Hãy chắc chắn rằng bạn lưu trữ các file này ở nơi an toàn và dễ truy cập khi cấu hình.

Nếu bạn đang cần mua SSL chất lượng với giá cả phải chăng, hãy liên hệ ngay với Vietnix. Vietnix cung cấp đa dạng các gói SSL từ các nhà cung cấp uy tín, giúp bảo vệ website của bạn một cách toàn diện và nâng cao độ tin cậy với khách hàng.

Cấu hình NGINX

Mở file cấu hình NGINX (/etc/nginx/nginx.conf hoặc file cấu hình riêng của website trong /etc/nginx/sites-available/).

Thêm cấu hình SSL vào khối server:

server {

    listen 443 ssl;

    server_name example.com;

    ssl_certificate /path/to/your/certificate.crt;

    ssl_certificate_key /path/to/your/private-key.key;

    # Cấu hình các tùy chọn bảo mật khác tại đây

}

Kiểm tra cấu hình: Chạy lệnh nginx -t để kiểm tra cú pháp. Nếu thành công, bạn sẽ thấy thông báo “syntax is okay” và “test is successful“. Nếu có lỗi, hãy kiểm tra lại các dòng cấu hình và sửa lỗi trước khi khởi động lại NGINX.

Khởi động lại NGINX: sudo service nginx restart hoặc sudo systemctl restart nginx.

Mở cổng 443 trên Firewall: Đảm bảo cổng 443 được mở trên firewall để cho phép kết nối HTTPS.

Kiểm tra website qua HTTPS: Truy cập https://example.com (thay example.com bằng tên miền của bạn) trên trình duyệt. Nếu thành công, bạn sẽ thấy biểu tượng ổ khóa trong thanh địa chỉ.

iconLưu ý

Bạn có thể tăng cường bảo mật bằng cách thêm các tùy chọn như HSTS, cấu hình ciphers và các tùy chọn khác trong phần cấu hình SSL của NGINX.

Khởi động NGINX

Sau khi hoàn tất quá trình cấu hình và đưa ứng dụng website đến thư mục tương thích. Bạn đã có thể khởi động NGINX và bắt đầu sử dụng thông qua câu lệnh:

sudo service nginx start

Trong trường hợp, nếu bạn cần thay đổi cấu hình chỉ cần thực hiện quá trình tải lại (không có thời gian downtime) thông qua lệnh như sau: 

service nginx reload 

Kết thúc bằng việc kiểm tra trạng thái của NGINX theo cách thực hiện lệnh sau: 

service nginx status

Hướng dẫn sử dụng NGINX để Load Balancer (cân bằng tải)

NGINX không chỉ là một web server mạnh mẽ mà còn hỗ trợ tính năng Load Balancing (cân bằng tải), giúp phân phối lưu lượng truy cập đến nhiều máy chủ backend nhằm tăng tính sẵn sàng và hiệu suất cho hệ thống.

Trong NGINX, upstream là một khối cấu hình dùng để định nghĩa các server backend mà NGINX sẽ chuyển tiếp yêu cầu đến. Các máy chủ backend này có thể chạy các ứng dụng giống nhau, giúp chia tải đều cho toàn hệ thống.

Cấu hình Upstream Block:

  • Khai báo khối upstream trong file cấu hình NGINX (nginx.conf hoặc file cấu hình trong thư mục sites-available).
  • Định nghĩa các máy chủ backend trong khối upstream bằng chỉ thị server:
upstream proserver {

    server 10.10.10.9:9002 weight=1;

    server 10.10.10.10:9002 weight=2;

}
  • ip_address:port (10.10.10.9:9002): Địa chỉ IP và cổng của máy chủ backend.
  • weight=number: Trọng số của máy chủ (mặc định là 1). Máy chủ có trọng số cao hơn sẽ nhận được nhiều yêu cầu hơn.

Các thuật toán cân bằng tải:

  • round-robin: Phân phối yêu cầu đều đến các máy chủ (mặc định).
  • least_conn: Chuyển yêu cầu đến máy chủ có ít kết nối nhất.
  • ip_hash: Phân phối yêu cầu dựa trên địa chỉ IP của client, đảm bảo client luôn kết nối đến cùng một máy chủ. Cấu hình bằng cách thêm ip_hash; trong khối upstream.

Sử dụng proxy_pass trong Location Block:

Trong khối server và location, sử dụng chỉ thị proxy_pass để chuyển hướng yêu cầu đến khối upstream đã định nghĩa:

server {

    listen 9000;

    # ... các chỉ thị khác

    location / {

        proxy_pass http://proserver;

        proxy_buffering off; # Tùy chọn, tắt bộ đệm proxy

        client_max_body_size 5M; # Tùy chọn, giới hạn kích thước request body

    }

}

Ví dụ cấu hình Load Balancer cơ bản:

upstream backend_servers {

    server 10.10.10.9:9002 weight=1;

    server 10.10.10.10:9002 weight=2;

}

server {

    listen 80;

    server_name example.com; # Thay bằng tên miền của bạn

    location / {

        proxy_pass http://backend_servers;

    }

}

Khởi động lại NGINX: Sau khi cấu hình, khởi động lại NGINX để áp dụng thay đổi: sudo service nginx restart hoặc sudo systemctl restart nginx.

Hướng dẫn kiểm tra NGINX trên website

Để kiểm tra hoạt động của NGINX trên website, bạn có thể thực hiện các bước sau:

Kiểm tra trạng thái hoạt động: Sử dụng lệnh sudo service nginx status hoặc sudo systemctl status nginx để kiểm tra xem NGINX có đang chạy hay không.

Kiểm tra log file: Kiểm tra các file log của NGINX để tìm lỗi và thông tin hoạt động:

  • /var/log/nginx/error.log: Chứa các thông báo lỗi. Sử dụng sudo tail -f /var/log/nginx/error.log để theo dõi log theo thời gian thực.
  • /var/log/nginx/access.log: Chứa thông tin về các yêu cầu đến máy chủ.

Kiểm tra cổng lắng nghe: Sử dụng lệnh sudo netstat -tuln | grep :80sudo netstat -tuln | grep :443 để kiểm tra xem NGINX có đang lắng nghe trên cổng 80 (HTTP) và 443 (HTTPS) hay không. Lệnh sudo ss -tuln | grep :80 hoặc sudo ss -tuln | grep :443 cũng có thể được sử dụng.

Kiểm tra cấu hình: Sử dụng lệnh sudo nginx -t để kiểm tra cú pháp của file cấu hình NGINX. Điều này giúp phát hiện lỗi cấu hình trước khi khởi động lại NGINX.

Kiểm tra trực tiếp trên trình duyệt: Truy cập website trên trình duyệt để kiểm tra xem NGINX có phản hồi đúng như mong đợi hay không. Kiểm tra cả HTTP và HTTPS nếu đã cấu hình HTTPS. Đây là cách kiểm tra trực quan nhất để đảm bảo website hoạt động bình thường.

NGINX phục vụ web

Mặc dù NGINX trở nên nổi tiếng là máy chủ web nhanh nhất, kiến ​​trúc cơ bản có thể mở rộng đã chứng minh lý tưởng cho nhiều tác vụ web ngoài việc phục vụ nội dung. Do có thể xử lý khối lượng kết nối lớn, NGINX thường được sử dụng làm reverse proxy và cân bằng tải để quản lý lưu lượng đến và phân phối đến các upstream server – mọi thứ từ máy chủ cơ sở dữ liệu đến dịch microservices.

NGINX phục vụ web
NGINX phục vụ web

NGINX cũng thường được đặt giữa máy khách và máy chủ web thứ hai, để phục vụ như một SSL Terminator, TLS hoặc web accelerator. Hoạt động như một trung gian, NGINX xử lý hiệu quả các tác vụ có thể làm chậm máy chủ web của bạn, chẳng hạn như SSL/TLS negotiating hoặc nén và cache nội dung để cải thiện hiệu suất. Các trang web động, được xây dựng bằng cách sử dụng mọi thứ từ Node.js đến PHP, thường triển khai NGINX làm cache nội dung và reverse proxy để giảm tải cho các máy chủ ứng dụng và sử dụng phần cứng hiệu quả nhất.

NGINX và NGINX Plus: Khác biệt và lợi ích

NGINX (Miễn phí, Mã nguồn mở)

NGINX là một web server mã nguồn mở mạnh mẽ, mang lại nhiều lợi ích quan trọng cho các hệ thống web và ứng dụng:

  • Hiệu suất cao: Xử lý hàng nghìn kết nối đồng thời với tốc độ nhanh, tối ưu hóa tài nguyên hệ thống.
  • Bộ nhớ đệm hiệu quả: Sử dụng bộ nhớ đệm để tăng tốc độ truy cập đến các tệp tĩnh và giảm áp lực lên máy chủ.
  • Cân bằng tải: Phân phối đều khối lượng công việc giữa nhiều máy chủ, tối ưu hóa hiệu suất hệ thống.
  • Reverse proxy: Đảm bảo bảo mật và hiệu suất khi chuyển hướng yêu cầu từ client đến server.
  • SSL và TLS offloading: Xử lý mã hóa SSL/TLS để giảm gánh nặng cho máy chủ ứng dụng.
  • WebSockets và HTTP/2 hỗ trợ: Thúc đẩy ứng dụng tương tác thời gian thực và cải thiện hiệu suất.
  • Kiến trúc modular: Linh hoạt và dễ mở rộng với các module và plugin.

NGINX Plus (Thương mại)

NGINX Plus là phiên bản thương mại, xây dựng trên nền tảng NGINX mã nguồn mở, bổ sung các tính năng cao cấp dành cho doanh nghiệp:

  • Hỗ trợ chính thức và dịch vụ khách hàng: Nhận hỗ trợ kỹ thuật chuyên nghiệp và dịch vụ khách hàng từ đội ngũ chuyên gia của NGINX.
  • Cân bằng tải nâng cao: Cung cấp tính năng cân bằng tải nâng cao với giám sát sức khỏe máy chủ và cảnh báo tự động.
  • Quản lý và giám sát tốt hơn: Giao diện quản trị và giám sát trực quan, cung cấp thông tin chi tiết về hiệu suất và hoạt động.
  • Khả năng mở rộng linh hoạt: Tích hợp dễ dàng với nhiều giải pháp và môi trường khác nhau, từ cloud đến on-premises.
  • Quản lý giấy phép và bảo mật mạnh mẽ: Cung cấp các tính năng an ninh và quản lý giấy phép để đảm bảo tính bảo mật và tuân thủ.
  • Live Activity Monitoring: Theo dõi hoạt động trực tiếp của hệ thống để phát hiện và giải quyết vấn đề một cách nhanh chóng.
  • API Gateway và Load Balancing Layer 7: Hỗ trợ quản lý API và cân bằng tải ứng dụng ở cấp độ lớp 7.
NGINX Plus
NGINX Plus

Khi nào nên sử dụng NGINX và NGINX Plus?

Cả NGINX và NGINX Plus đều là những giải pháp hàng đầu cho việc phân phối ứng dụng và cho thuê máy chủ web, được tin dùng bởi các trang web có lưu lượng truy cập cực lớn như Dropbox, Netflix và Zynga. 

Với khả năng hoạt động đa năng như bộ cân bằng tải, reverse proxy, cache nội dung và web server, NGINX giúp đơn giản hóa cơ sở hạ tầng và giảm thiểu số lượng công cụ cần quản lý. NGINX Plus là lựa chọn lý tưởng cho các doanh nghiệp cần hỗ trợ chính thức, các tính năng nâng cao và khả năng giám sát toàn diện cho các ứng dụng quan trọng.

Bằng cách hiểu rõ khả năng mạnh mẽ của Nginx, bạn có thể tùy chỉnh nó sao cho phù hợp với dự án của mình. Hãy khám phá một số cách tuyệt vời để tận dụng tối đa sức mạnh của Nginx:

Loại bỏ các limitation ở tầng kernel

Để tận dụng tối đa Nginx, chúng ta có thể điều chỉnh một số giới hạn ở tầng kernel. Dưới đây là các thiết lập quan trọng trong tệp /etc/sysctl.conf:

  • 1. net.core.somaxconn: Tăng số kết nối tối đa mà Nginx có thể xếp hàng trước khi xử lý.
  • 2. net.ipv4.iplocalportrange: Tăng phạm vi cổng tạm thời để tránh chặn khi có nhiều yêu cầu truy cập.
  • 3. sys.fs.filemax: Tăng số file descriptor tối đa để Nginx có thể mở nhiều kết nối hơn.
  • 4. net.ipv4.tcpwmem và net.ipv4.tcprmem: Tăng kích thước đệm cho giao thức TCP/IP.

Các thiết lập này giúp tăng hiệu suất và đảm bảo hệ thống hoạt động mượt mà hơn.

Dưới đây là bộ config được recommend cho nginx server:

net.ipv4.ip_local_port_range='1024 65000'
net.ipv4.tcp_tw_reuse='1'
net.ipv4.tcp_fin_timeout='15'
net.core.netdev_max_backlog='4096'
net.core.rmem_max='16777216'
net.core.somaxconn='4096'
net.core.wmem_max='16777216'
net.ipv4.tcp_max_syn_backlog='20480'
net.ipv4.tcp_max_tw_buckets='400000'
net.ipv4.tcp_no_metrics_save='1'
net.ipv4.tcp_rmem='4096 87380 16777216'
net.ipv4.tcp_syn_retries='2'
net.ipv4.tcp_synack_retries='2'
net.ipv4.tcp_wmem='4096 65536 16777216'
vm.min_free_kbytes='65536'

Phân tích log nginx để tìm bottle neck

Phân tích access log từ nginx sẽ giúp bạn biết bottle neck ở đâu, bằng cách sử dụng tool Kataribe.

Để sử dụng tool này thì bạn cần setting nginx log format sử dụng directive:

log_format with_time '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time';
access_log /var/log/nginx/access.log with_time;

Caching with nginx

Khi sử dụng Nginx để phục vụ tệp tĩnh, việc cấu hình cache và nén là rất quan trọng. Sử dụng nén gzip giúp giảm cost liên quan đến IO và băng thông. Đồng thời, thiết lập cache control giúp server không yêu cầu lại tệp tĩnh cho đến khi cache hết hạn. Dưới đây là một số thiết lập bạn có thể tham khảo

http {
gzip on;
gzip_http_version 1.0;
gzip_types text/plain
text/html
text/xml
text/css
application/xml
application/xhtml+xml
application/rss+xml
application/atom_xml
application/javascript
application/x-javascript
application/x-httpd-php;
gzip_disable "MSIE [1-6].";
gzip_disable "Mozilla/4";
gzip_comp_level 1;
gzip_proxied any;
gzip_vary on;
gzip_buffers 4 8k;
gzip_min_length 1100;
}

Hãy tận dụng sự dư thừa bộ nhớ của bạn khi sử dụng Nginx như một reverse proxy. Nếu lượng dữ liệu phản hồi không lớn, bạn có thể thiết lập Nginx để lưu trữ bộ nhớ cache thay vì lưu trữ trên đĩa. Điều này giúp tăng cường hiệu suất và tăng trải nghiệm người dùng khi truy cập vào các dữ liệu phản hồi:

proxy_cache_path /dev/shm/nginx levels=1:2 keys_zone=czone:16m max_size=32m inactive=10m;

Advance nginx

Một cài đặt quan trọng là “keepalive” trong HTTP, giúp giữ kết nối TCP sau khi phiên kết nối HTTP kết thúc. Điều này cho phép tái sử dụng kết nối cho các yêu cầu tiếp theo. Kỹ thuật này đặc biệt hữu ích khi người dùng gửi nhiều yêu cầu để tải các tài nguyên tĩnh, giảm thời gian thiết lập kết nối và tăng hiệu suất truy cập cho người dùng. Sử dụng keepalive trên nginx rất đơn giản bằng cách thêm directive keepalive vào trong upstream section:

upstream app {
server 127.0.0.1:5000;
keepalive 16;
}

Vietnix: Giải pháp hosting và VPS tốc độ cao, bảo mật cho doanh nghiệp

Vietnix là nhà cung cấp dịch vụ hosting và VPS uy tín hàng đầu, cam kết mang đến tốc độ vượt trội, sự ổn định tuyệt đối và bảo mật tối ưu cho doanh nghiệp của bạn. Với hạ tầng mạnh mẽ, công nghệ tiên tiến và đội ngũ hỗ trợ kỹ thuật 24/7 chuyên nghiệp, Vietnix đảm bảo website và ứng dụng của bạn luôn hoạt động mượt mà, đáp ứng mọi nhu cầu kinh doanh. Hãy trải nghiệm sự khác biệt với Vietnix!

Thông tin liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Website: https://vietnix.vn/ 

Câu hỏi thường gặp

Upstream NGINX  là gì?

Trong NGINX, upstream là một nhóm các máy chủ web hoặc ứng dụng web mà NGINX có thể chuyển tiếp các yêu cầu đến. Upstream được sử dụng để cân bằng tải giữa các máy chủ web hoặc ứng dụng web, giúp cải thiện hiệu suất và khả năng mở rộng của hệ thống.

NGINX reverse proxy là gì?

NGINX reverse proxy là một tính năng của phần mềm web server NGINX, cho phép nó hoạt động như một bộ trung gian giữa người dùng và các máy chủ web thực tế. Nó nhận yêu cầu từ người dùng, xác định máy chủ web nào phù hợp để xử lý yêu cầu đó, và sau đó chuyển tiếp yêu cầu đến máy chủ đó.

Web server là gì?

Web server là một máy tính hoặc phần mềm xử lý các yêu cầu từ các trình duyệt web và trả về các trang web. Web server nhận yêu cầu từ trình duyệt web thông qua giao thức HTTP. Yêu cầu này bao gồm URL của trang web mà người dùng đang cố truy cập. Web server sau đó tìm kiếm trang web đó trên ổ đĩa của nó và trả về trang web đó cho trình duyệt web.

Lỗi NGINX là gì?

Lỗi NGINX là một lỗi xảy ra khi NGINX – một web server mã nguồn mở, không thể xử lý yêu cầu của người dùng. Lỗi này có thể do nhiều nguyên nhân, bao gồm:
– Lỗi cấu hình: Lỗi cấu hình là nguyên nhân phổ biến nhất của lỗi NGINX. Nếu cấu hình NGINX không chính xác, NGINX có thể không thể tìm thấy tài nguyên cần thiết để xử lý yêu cầu.
– Lỗi phần mềm: Lỗi phần mềm là một nguyên nhân khác của lỗi NGINX. Nếu có lỗi trong mã NGINX, NGINX có thể gặp sự cố khi xử lý yêu cầu.
– Lỗi phần cứng: Lỗi phần cứng cũng có thể gây ra lỗi NGINX. Nếu có vấn đề với phần cứng của máy chủ, NGINX có thể không thể xử lý yêu cầu.

Tóm lại, NGINX là một web server mạnh mẽ và linh hoạt, không chỉ nổi bật về hiệu suất mà còn đa dạng về chức năng. Việc nắm vững kiến thức tổng quan, quy trình cài đặt và cấu hình NGINX là một kỹ năng quan trọng đối với bất kỳ ai làm việc trong lĩnh vực phát triển web và quản trị hệ thống. Hy vọng bài viết này đã cung cấp cho bạn nền tảng vững chắc để khám phá và tận dụng tối đa sức mạnh của NGINX.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

Thất vọng

Chưa hữu ích

Bình thường

Hữu ích

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi 30 tháng 4
Khi mua Hosting/VPS
16/04/2025 - 16/05/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

Thất vọng

Chưa hữu ích

Bình thường

Hữu ích

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG