Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

NGINX là gì? Tổng quan vai trò, kiến trúc và ứng dụng của NGINX

Hưng Nguyễn

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

Ngày đăng:23/09/2025
Cập nhật cuối:26/09/2025
Lượt xem

Đánh giá

5/5 - (70 bình chọn)
công nghệ Vietnix Speed Optimizer

NGINX là một web server mã nguồn mở hiệu suất cao, không chỉ đóng vai trò phục vụ nội dung web mà còn là một công cụ đa năng cho các tác vụ như reverse proxy, cân bằng tải và caching. Với kiến trúc hướng sự kiện độc đáo, NGINX đã trở thành lựa chọn hàng đầu cho các website có lưu lượng truy cập lớn trên toàn cầu. Trong bài viết này, mình sẽ giúp bạn hiểu rõ NGINX là gì, vai trò, các tính năng chính và cách cấu hình cơ bản để bạn có thể bắt đầu sử dụng công cụ mạnh mẽ này.

Những điểm chính

  1. Khái niệm NGINX: Hiểu rõ NGINX là gì, vì sao nó trở thành một trong những web server phổ biến nhất hiện nay.
  2. Lịch sử phát triển: Nắm được quá trình hình thành và sự phát triển vượt bậc của NGINX trong ngành công nghệ web.
  3. Cách thức hoạt động: Hiểu rõ cơ chế xử lý request và phân phối tài nguyên của NGINX.
  4. Vai trò chính: Biết được các nhiệm vụ cốt lõi mà NGINX đảm nhận trong hệ thống web.
  5. Tính năng nổi bật: Khám phá những khả năng quan trọng của NGINX trong vai trò máy chủ HTTP và mail proxy.
  6. Ưu nhược điểm: Đánh giá được điểm mạnh, hạn chế của NGINX để đưa ra quyết định sử dụng phù hợp.
  7. So sánh với Apache: Hiểu sự khác biệt giữa NGINX và Apache, cùng gợi ý lựa chọn từ Vietnix.
  8. Cài đặt và cấu hình: Có thể tự triển khai NGINX, từ cài đặt cơ bản đến cấu hình HTTPS và các thiết lập chi tiết khác.
  9. Khởi động và vận hành: Biết cách khởi chạy, kiểm tra hoạt động của NGINX và sử dụng cho mục đích Load Balancer.
  10. Cách sử dụng hiệu quả: Học được các kỹ thuật tối ưu như tinh chỉnh kernel, phân tích log, caching và nâng cao cấu hình.
  11. Biết thêm về nền tảng hạ tầng được Vietnix tối ưu cho NGINX, cùng các khái niệm liên quan như web server, reverse proxy và so sánh nhanh với Apache để chọn giải pháp đúng lúc.
  12. Câu hỏi thường gặp: Giải đáp những thắc mắc phổ biến khi sử dụng NGINX như: khi nào nên dùng thay Apache, cách xử lý lỗi cấu hình thường gặp, cách tối ưu hiệu suất và lựa chọn hosting phù hợp.
những điểm chính

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.

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.

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
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

Để NGINX vận hành trơn tru và phát huy hết sức mạnh, việc lựa chọn web hosting phù hợp là yếu tố quyết định. Dịch vụ Hosting Giá Rẻ của Vietnix chính là lựa chọn đáng cân nhắc khi vừa đảm bảo hiệu năng, vừa tối ưu chi phí. Với nền tảng CPU Intel Xeon Gold ổn định, bạn có thể yên tâm xử lý từ những tác vụ cơ bản đến nâng cao. Hệ thống còn hỗ trợ linh hoạt nâng cấp hoặc hạ cấp gói dịch vụ tức thì, giúp tiết kiệm tối đa ngân sách vận hành theo nhu cầu thực tế. Liên hệ ngay để được tư vấn chi tiết!

img sp hostinggr 2

HOSTING GIÁ RẺ – CÀI ĐẶT DỄ DÀNG VỚI WORDPRESS TOOLKIT

Xây dựng website WordPress chuyên nghiệp, không cần nhiều kiến thức lập trình.

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

NGINX được Igor Sysoev phát triển từ 2002 để giải quyết bài toán C10K – xử lý 10.000 kết nối đồng thời bằng kiến trúc đơn luồng, hướng sự kiện, giúp tăng hiệu suất và tiết kiệm tài nguyên.

Các cột mốc phát triển chính:

  • 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 NGINX

NGINX nổi bật nhờ kiến trúc xử lý hướng sự kiện khác biệt so với các web server truyền thống dựa trên process hoặc thread. Thay vì tạo một process hoặc thread riêng cho từng request, NGINX chỉ sử dụng một số lượng ít tiến trình worker, mỗi worker có khả năng xử lý đồng thời hàng ngàn kết nối nhờ vào cơ chế bất đồng bộ.

Cụ thể, NGINX vận hành như sau:

  • Khi người dùng gửi yêu cầu truy cập website, NGINX nhận thông tin và đưa vào hàng đợi.
  • Worker process của NGINX sẽ quản lý và xử lý nhiều kết nối đồng thời trên cùng một tiến trình nhờ kiến trúc bất đồng bộ.
  • Mỗi kết nối sẽ được quản lý bởi worker connection, đảm bảo tối ưu hóa hiệu suất và tiêu thụ ít tài nguyên hệ thống.
  • Các request được worker process gửi đến master process để xác nhận, sau đó phản hồi lại người dùng.

Nhờ cơ chế này, NGINX dễ dàng phục vụ hàng ngàn truy vấn cùng lúc, đặc biệt hiệu quả cho nội dung tĩnh như file hình ảnh, CSS, JS,… Đây là lý do NGINX giải quyết thành công bài toán C10K – xử lý 10.000 kết nối đồng thời mà vẫn đảm bảo hiệu suất và độ ổn định.

NGINX hoạt động như thế nào?
Cách thức hoạt động của NGINX (Nguồn: Internet)

Vai trò chính của NGINX

NGINX rất linh hoạt và có thể đảm nhận nhiều vai trò quan trọng trong hạ tầng website:

  • Web server: NGINX phục vụ trực tiếp các nội dung tĩnh của website như tệp HTML, CSS, JavaScript và hình ảnh đến trình duyệt của người dùng một cách nhanh chóng.
  • Reverse proxy: NGINX có thể đứng giữa người dùng Internet và các máy chủ ứng dụng (backend server), nhận yêu cầu từ người dùng, chuyển tiếp đến máy chủ phù hợp, sau đó nhận phản hồi và gửi lại cho người dùng, giúp tăng cường bảo mật, cân bằng tải và thực hiện nhiều tác vụ tối ưu hóa khác.
  • Load balancer (cân bằng tải): Khi website của bạn có nhiều máy chủ backend, NGINX có thể phân phối lưu lượng truy cập một cách thông minh đến các máy chủ này. Việc này giúp tránh tình trạng quá tải cho bất kỳ máy chủ đơn lẻ nào và tăng tính sẵn sàng cho toàn hệ thống.
  • Các vai trò khác: Ngoài ra, NGINX còn có thể hoạt động như một HTTP cache (bộ đệm HTTP) để tăng tốc độ phản hồi, hoặc làm Mail proxy (proxy cho email).
Các vai trò chính
Các vai trò chính của NGINX

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

Tính năng của máy chủ HTTP Nginx như sau:

  • Xử lý hiệu quả trên 10.000 kết nối đồng thời tại mọi thời điểm với bộ nhớ sử dụng cực thấp, tối ưu cho hệ thống có traffic lớn.
  • Phục vụ các tập tin tĩnh (static files) nhanh chóng, hỗ trợ lập chỉ mục file giúp website tải nhanh và vận hành ổn định.
  • Tăng tốc reverse proxy nhờ tích hợp bộ nhớ đệm (cache), vừa cân bằng tải vừa đảm bảo khả năng chịu lỗi tốt.
  • Hỗ trợ bộ nhớ đệm cho FastCGI, uwsgi, SCGI và memcached, giúp nâng cao hiệu suất xử lý ứng dụng động.
  • Kiến trúc modular giúp tùy biến hệ thống linh hoạt; tăng tốc độ tải trang với nén gzip tự động.
  • Đáp ứng đầy đủ nhu cầu mã hoá bảo mật với SSL/TLS, dễ dàng cấu hình và bảo trì.
  • Cấu hình linh hoạt, dễ lưu nhật ký truy vấn (access log, error log) phục vụ giám sát và phân tích vận hành.
  • Chuyển hướng lỗi HTTP 3XX-5XX, rewrite URL bằng regular expressions linh hoạt cho SEO và chuyển cấu trúc link.
  • Có thể kiểm soát tỷ lệ đáp ứng truy vấn, giới hạn số kết nối và truy vấn từ từng địa chỉ IP (chống DDoS/bảo mật).
  • Hỗ trợ nhúng mã PERL cho các tác vụ đặc biệt, mở rộng khả năng xử lý theo nhu cầu.
  • Tương thích hoàn toàn với IPv6, hỗ trợ giao tiếp WebSockets cho ứng dụng thời gian thực.
  • Truyền tải mượt mà các tệp media FLV, MP4, phù hợp với streaming video.

Tính năng nổi bật của máy chủ mail proxy Nginx

Hỗ trợ xác thực đa dạng cho các giao thức:

  • POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5
  • IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5
  • SMTP: AUTH LOGIN/PLAIN/CRAM-MD5
  • Hỗ trợ mã hóa và truyền dữ liệu an toàn qua SSL, STARTTLS, 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

NGINX và Apache đều là hai web server phổ biến, hỗ trợ đa nền tảng và có cộng đồng sử dụng lớn. Cả hai đều có tài liệu hướng dẫn phong phú, bảo mật tốt và khả năng xử lý PHP hiệu quả nhờ PHP-FPM. Hiệu suất xử lý nội dung động và thời gian thực thi PHP gần như tương đương nhau. Sau đây là bảng so sánh những điểm khác biệt giữa NGINX và Apache.

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.

Dùng NGINX khi:

  • Website có lượng truy cập rất lớn, cần xử lý hàng ngàn kết nối đồng thời.
  • Ưu tiên tốc độ phục vụ nội dung tĩnh (ảnh, CSS, JS) cực nhanh.
  • Cần tính năng reverse proxy, load balancer, HTTP caching hiệu quả.
  • Xây dựng ứng dụng web hiện đại, microservices.

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.

Xu hướng kết hợp: Dùng NGINX làm reverse proxy phía trước (xử lý kết nối, file tĩnh, cân bằng tải), Apache xử lý nội dung động phía sau. Lựa chọn phụ thuộc vào nhu cầu, quy mô dự án và kỹ năng của bạn. Nếu bạn cần tư vấn, đội ngũ của Vietnix luôn sẵn sàng hỗ trợ chọn giải pháp web server và hạ tầng phù hợp.

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 nhiên 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 response. 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.

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;
}

Giải pháp hạ tầng Vietnix – Nền tảng tối ưu cho NGINX

Vietnix cung cấp giải pháp hạ tầng mạnh mẽ, tối ưu cho các hệ thống dùng NGINX như hosting và VPS. Hạ tầng của Vietnix giúp NGINX phát huy tối đa hiệu suất, đảm bảo website hoạt động nhanh, ổn định và bảo mật cao. Đội ngũ kỹ thuật Vietnix luôn đồng hành hỗ trợ tận tình, giúp khách hàng dễ dàng triển khai và mở rộng hệ thống. Lựa chọn Vietnix, bạn hoàn toàn yên tâm về nền tảng vận hành và tối ưu website với NGINX. Liên hệ ngay để được tư vấn chi tiết!

Thông tin liên hệ:

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

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

NGINX reverse proxy là gì?

NGINX reverse proxy là gì là khi NGINX đứng làm trung gian, nhận yêu cầu từ người dùng, chuyển tiếp đến một hoặc nhiều máy chủ ứng dụng (backend server) thực sự xử lý website, sau đó gửi phản hồi lại cho người dùng. Nó giúp tăng bảo mật, cân bằng tải, caching.

Sự khác biệt chính giữa NGINX và Apache là gì (tóm tắt)?

Kiến trúc xử lý: NGINX hướng sự kiện (hiệu quả, ít tài nguyên), Apache dựa trên process/thread.
Nội dung tĩnh: NGINX thường vượt trội hơn.
Cấu hình: NGINX tập trung, Apache linh hoạt với .htaccess.

Khi nào nên ưu tiên dùng NGINX?

Website traffic rất lớn, cần xử lý hàng ngàn kết nối đồng thời.
– Ưu tiên tốc độ phục vụ nội dung tĩnh cực nhanh.
– Cần tính năng reverse proxy hoặc load balancer hiệu suất cao.
– Xây dựng ứng dụng web hiện đại, microservices.

NGINX là một công cụ đa năng, đóng vai trò trung tâm trong kiến trúc của nhiều website và ứng dụng hiện đại. Với hiệu suất vượt trội, khả năng xử lý đồng thời hàng nghìn kết nối và sự linh hoạt trong các vai trò như reverse proxy hay cân bằng tải, NGINX đã chứng minh được vị thế dẫn đầu của mình. Việc nắm vững cách cài đặt, cấu hình và tối ưu NGINX là một kỹ năng thiết yếu, giúp các nhà phát triển và quản trị viên xây dựng được những hệ thống web nhanh, ổn định và có khả năng mở rộng tốt.

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

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

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 tháng 10
Nhanh tay, số lượng có hạn!
01/10/2025 - 31/10/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

icon popup single post

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

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

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