Nginx vs HAProxy: Chọn Reverse Proxy phù hợp
So sánh Nginx và HAProxy như reverse proxy: hiệu năng, cân bằng tải, TLS, quan sát, bảo mật và các cấu hình phổ biến để chọn phương án phù hợp.

Reverse proxy mang lại gì cho ứng dụng của bạn
Một reverse proxy là một máy chủ đứng phía trước ứng dụng của bạn và nhận các yêu cầu từ client trước. Nó chuyển tiếp mỗi yêu cầu tới dịch vụ backend đúng (các server ứng dụng của bạn) và trả phản hồi về cho client. Người dùng nói chuyện với proxy; proxy nói chuyện với ứng dụng của bạn.
Một forward proxy hoạt động theo hướng ngược lại: nó đứng trước client (ví dụ trong mạng công ty) và chuyển các yêu cầu đi ra internet. Mục đích chính là kiểm soát, lọc hoặc che giấu lưu lượng client.
Một load balancer thường được hiện thực như một reverse proxy, nhưng với trọng tâm rõ ràng: phân phối lưu lượng qua nhiều instance backend. Nhiều sản phẩm (bao gồm Nginx và HAProxy) vừa làm reverse proxy vừa làm load balancing, nên hai thuật ngữ đôi khi được dùng thay thế cho nhau.
Mục tiêu điển hình khi đội ngũ dùng reverse proxy
Hầu hết triển khai bắt đầu vì một hoặc nhiều lý do sau:
- TLS/SSL termination: xử lý HTTPS ở một chỗ, quản lý chứng chỉ tập trung, và chuyển HTTP thẳng tới dịch vụ nội bộ khi phù hợp.
- Định tuyến: gửi lưu lượng tới dịch vụ khác nhau dựa trên hostname, path, header hoặc luật khác (ví dụ
/apiđến service API,/đến web app). - Đệm và quản lý kết nối: làm mượt client chậm hoặc upstream chậm, giảm chi phí kết nối trên server app, và cải thiện độ tin cậy cảm nhận được.
- Kiểm soát bảo vệ: áp dụng giới hạn yêu cầu, lọc cơ bản và mặc định an toàn trước khi yêu cầu tới ứng dụng.
Vị trí đặt phía trước ứng dụng
Reverse proxy thường đứng trước website, API và microservices—hoặc ở edge (internet công cộng) hoặc nội bộ giữa các dịch vụ. Trong các kiến trúc hiện đại, chúng còn là thành phần của ingress gateways, blue/green deployments và các cấu hình cao tính sẵn sàng.
Hướng dẫn này giúp bạn quyết định điều gì
Nginx và HAProxy có vùng chồng lấn, nhưng khác nhau về điểm mạnh. Các phần tiếp theo so sánh những yếu tố quyết định như hiệu năng khi có nhiều kết nối, cân bằng tải và health checks, hỗ trợ giao thức (HTTP/2, TCP), tính năng TLS, quan sát và vận hành hàng ngày.
Tổng quan Nginx: điểm mạnh và trường hợp sử dụng điển hình
Nginx được dùng rộng rãi vừa như web server vừa như reverse proxy. Nhiều đội bắt đầu với Nginx để phục vụ website công khai rồi mở rộng vai trò để đứng trước server ứng dụng—xử lý TLS, định tuyến lưu lượng và làm phẳng các đột biến.
Vì sao Nginx phù hợp ở edge
Nginx nổi bật khi lưu lượng chính của bạn là HTTP(S) và bạn muốn một “cửa trước” có thể làm nhiều việc. Nó đặc biệt mạnh ở:
- Phục vụ tài nguyên tĩnh (ảnh, CSS/JS) hiệu quả
- Hoạt động như reverse proxy HTTP với định tuyến theo path và host đơn giản
- Caching phản hồi để giảm tải cho upstream apps
- Thêm hoặc chuẩn hóa header (ví dụ
X-Forwarded-For, các header bảo mật)
Vì nó vừa có thể phục vụ nội dung vừa proxy đến ứng dụng, Nginx thường là lựa chọn cho các triển khai nhỏ đến vừa khi bạn muốn ít thành phần hơn.
Module và tính năng được dùng nhiều
Các khả năng phổ biến bao gồm:
- TLS termination và quy trình quản lý chứng chỉ (thường có automation cho reload)
- Nén (gzip/brotli tùy build) để giảm băng thông
- Rate limiting và kiểm soát yêu cầu cơ bản để chặn client ồn ào
- Rewrite và redirect cho cleanup URL và di chuyển legacy
- Tùy chọn như proxy WebSocket cho ứng dụng realtime
Các kịch bản “cửa trước” điển hình
Nginx thường được chọn khi bạn cần một entry point cho:
- Một site marketing kèm API (tĩnh + proxy)
- Cân bằng tải đơn giản giữa vài instance app
- Caching trước backend chậm (ví dụ CMS hoặc REST service)
- Đóng vai trò gateway cho nhiều dịch vụ dưới các hostname khác nhau
Nếu ưu tiên của bạn là xử lý HTTP đầy đủ tính năng và bạn thích ý tưởng kết hợp phục vụ web với reverse proxy, Nginx thường là lựa chọn mặc định ban đầu.
Tổng quan HAProxy: điểm mạnh và trường hợp sử dụng điển hình
HAProxy (High Availability Proxy) thường được dùng như reverse proxy và load balancer đứng trước một hoặc nhiều server ứng dụng. Nó nhận lưu lượng đến, áp dụng luật định tuyến và chuyển yêu cầu đến backend khỏe mạnh—thường giữ thời gian phản hồi ổn định khi có concurrency cao.
HAProxy thường dùng để làm gì
Đội ngũ thường triển khai HAProxy cho quản lý lưu lượng: phân phối request, giữ dịch vụ sẵn sàng khi có lỗi, và làm phẳng đột biến lưu lượng. Nó là lựa chọn phổ biến ở “edge” (lưu lượng north–south) và giữa các dịch vụ nội bộ (east–west), đặc biệt khi cần hành vi dự đoán được và kiểm soát chặt chẽ kết nối.
Điểm mạnh cốt lõi: kết nối, cân bằng tải, health checks
HAProxy nổi tiếng vì xử lý hiệu quả số lượng lớn kết nối đồng thời. Điều này quan trọng khi bạn có nhiều client kết nối cùng lúc (API bận rộn, kết nối lâu, microservices nhiều trao đổi) và muốn proxy luôn phản hồi.
Khả năng cân bằng tải là lý do lớn để chọn HAProxy. Ngoài round-robin đơn giản, nó hỗ trợ nhiều thuật toán và chiến lược định tuyến giúp bạn:
- Ngăn máy “nóng” bị quá tải
- Dời traffic từ từ trong quá trình rollout
- Ưa những instance nhanh hơn hoặc ít tải hơn khi cần
Health checks là một điểm mạnh khác. HAProxy có thể kiểm tra chủ động backend và tự động loại bỏ instance không khỏe khỏi rotation, rồi thêm lại khi phục hồi. Điều này giảm thời gian chết và ngăn các deployment “hỏng nửa chừng” ảnh hưởng tới tất cả người dùng.
Layer 4 vs Layer 7: ý nghĩa thực tế
HAProxy có thể hoạt động ở Layer 4 (TCP) và Layer 7 (HTTP).
- Layer 4 (TCP) tập trung vào chuyển tiếp kết nối thô. Phù hợp cho giao thức không cần inspect chi tiết HTTP—ví dụ proxy cho database, SMTP, Redis hoặc khi bạn muốn overhead tối thiểu.
- Layer 7 (HTTP) hiểu ngữ nghĩa HTTP, cho phép các tính năng như định tuyến theo header, quy tắc path và kiểm soát lưu lượng tinh vi.
Sự khác biệt thực tế: L4 thường đơn giản và rất nhanh cho chuyển tiếp TCP, còn L7 cho bạn logic định tuyến và xử lý yêu cầu phong phú khi cần.
Khi nào chọn HAProxy
HAProxy thường được chọn khi mục tiêu chính là cân bằng tải hiệu quả, ổn định và kiểm soát mạnh mẽ—ví dụ phân phối traffic API qua nhiều app server, quản lý failover giữa các vùng khả dụng, hoặc đứng trước dịch vụ mà số lượng kết nối và hành vi lưu lượng dự đoán được quan trọng hơn các tính năng web server nâng cao.
Cơ bản về hiệu năng: độ trễ, thông lượng và kết nối
So sánh hiệu năng thường sai lầm khi chỉ nhìn một con số (ví dụ “max RPS”) mà bỏ qua cảm nhận của người dùng.
Thông lượng vs độ trễ vs độ trễ tail
- Thông lượng là khối lượng công việc bạn có thể xử lý (request/giây hoặc byte/giây).
- Độ trễ là thời gian một request hoàn tất.
- Độ trễ tail (p95/p99) là nơi vấn đề thực sự xuất hiện: ngay cả khi trung bình ổn, 1–5% chậm nhất có thể gây timeout, retry và UX kém.
Một proxy có thể tăng thông lượng nhưng làm độ trễ tail xấu hơn nếu nó xếp hàng quá nhiều công việc khi tải cao.
Mẫu kết nối quan trọng
Xem xét “hình dạng” ứng dụng của bạn:
- Nhiều request ngắn (lưu lượng web điển hình): hiệu quả khi chấp nhận kết nối, handshake TLS và phân tích request quan trọng.
- Ít kết nối dài (WebSockets, streaming, gRPC, TCP giống DB): ổn định và sử dụng tài nguyên dự đoán cho mỗi kết nối quan trọng hơn RPS thô.
Nếu bạn benchmark với một mẫu nhưng triển khai với mẫu khác, kết quả sẽ không tương thích.
Buffering: bạn và kẻ thù
Buffering có thể hữu ích khi client chậm hoặc bursty, vì proxy có thể đọc đầy request (hoặc response) và cấp cho app một nhịp đều hơn.
Buffering có thể gây hại khi app cần streaming (SSE, tải lớn, realtime). Buffer thêm áp lực bộ nhớ và có thể làm xấu độ trễ tail.
Mẹo benchmark thực tế
Đo hơn là “max RPS”:
- RPS/thông lượng, p50/p95/p99 latency, và tỉ lệ lỗi (timeout, 502/503).
- Test tải ổn định và đột biến (burst nhanh thường bộc lộ hành vi xếp hàng).
- Dùng cấu hình keep-alive/TLS thực tế và ghi lại CPU, memory, và số kết nối mở.
Nếu p95 tăng nhanh trước khi xuất hiện lỗi, đó là dấu cảnh báo sớm của việc bão hòa—không phải “đầu dư thừa”.
So sánh cân bằng tải và health checks
Cả Nginx và HAProxy đều có thể đứng trước nhiều instance ứng dụng và phân phối lưu lượng, nhưng chúng khác nhau về độ sâu bộ tính năng cân bằng tải sẵn có.
Thuật toán cân bằng tải
Round-robin là lựa chọn mặc định “đủ tốt” khi backend tương tự nhau. Đơn giản, dễ dự đoán và phù hợp cho app stateless.
Least connections hữu ích khi thời lượng request khác nhau (tải xuống, API lâu, WebSocket). Nó ưu tiên backend đang có ít kết nối hoạt động hơn.
Weighted balancing (round-robin có trọng số, hoặc weighted least connections) phù hợp khi server không đồng nhất—kết hợp node cũ và mới, kích thước instance khác nhau, hoặc dồn traffic dần khi di chuyển.
Nói chung, HAProxy cung cấp nhiều lựa chọn thuật toán và kiểm soát chi tiết ở Layer 4/7, trong khi Nginx xử lý các trường hợp thông dụng một cách rõ ràng (và có thể mở rộng tùy edition/module).
Giữ phiên (stickiness)
Stickiness giữ người dùng trên cùng backend qua các request.
- Stickiness dựa trên cookie thường tốt cho web app: rõ ràng, hoạt động qua NAT và cho phép failover có kiểm soát nếu backend mất.
- Stickiness theo IP nguồn dễ bật nhưng có thể bất công (nhiều user sau một NAT cùng vào một backend) và có thể phá vỡ nếu tầm nhìn IP client thay đổi (CDN, proxy).
Chỉ dùng persistence khi thực sự cần (session trạng thái phía server legacy). Ứng dụng stateless thường dễ mở rộng và phục hồi hơn mà không cần nó.
Health checks: chủ động vs thụ động
Active health checks probe backend định kỳ (endpoint HTTP, kết nối TCP, status mong đợi). Chúng phát hiện lỗi ngay cả khi lưu lượng thấp.
Passive health checks phản ứng với lưu lượng thực: timeout, lỗi kết nối, hoặc phản hồi xấu sẽ đánh dấu server không khỏe. Nhẹ hơn nhưng có thể phát hiện chậm hơn.
HAProxy nổi tiếng với kiểm soát health-check và xử lý lỗi phong phú (ngưỡng, rise/fall counts, checks chi tiết). Nginx hỗ trợ check tốt, với khả năng khác nhau tùy build và edition.
Deploy không downtime: draining và retries
Với rolling deploy, hãy tìm các tính năng:
- Connection draining: ngừng gửi request mới tới backend nhưng để request đang chạy hoàn tất.
- Retries và redispatch: nếu backend chết giữa chừng, retry an toàn (chỉ cho request idempotent) hoặc gửi đến server khỏe khác.
Dù chọn gì, ghép draining với timeout ngắn, rõ ràng và endpoint ready/not ready để traffic dịch chuyển êm ái khi deploy.
Giao thức và TLS: HTTP, HTTP/2 và TCP Proxying
Reverse proxy đứng ở rìa hệ thống, nên lựa chọn giao thức và TLS ảnh hưởng đến hiệu năng trình duyệt và cách dịch vụ giao tiếp với nhau.
TLS termination và quản lý chứng chỉ
Cả Nginx và HAProxy đều có thể “terminate” TLS: chấp nhận kết nối mã hóa từ client, giải mã rồi chuyển yêu cầu tới app qua HTTP hoặc TLS được mã hóa lại.
Thực tế vận hành là quản lý chứng chỉ. Bạn cần kế hoạch cho:
- Lấy và renew chứng chỉ (thường ACME/Let’s Encrypt)
- Lưu trữ private key an toàn và giới hạn ai truy cập
- Reload cấu hình mà không làm rớt kết nối
Nginx thường được chọn khi TLS termination đi kèm các tính năng web server (tệp tĩnh, redirect). HAProxy được chọn khi TLS là một phần của lớp quản lý lưu lượng (cân bằng tải, quản lý kết nối).
HTTP/2: hiệu năng và tương thích
HTTP/2 có thể giảm thời gian tải trang bằng cách multiplex nhiều request trên cùng một kết nối. Cả hai công cụ đều hỗ trợ HTTP/2 phía client.
Các cân nhắc:
- Tương thích client: hầu hết trình duyệt hiện đại hỗ trợ HTTP/2, nhưng một số client cũ và công cụ tự động có thể không.
- Hỗ trợ backend: bạn có thể terminate HTTP/2 tại proxy và nói chuyện với upstream bằng HTTP/1.1—thường đơn giản hơn.
Khi nào cần proxy TCP
Nếu bạn cần định tuyến lưu lượng không phải HTTP (database, SMTP, Redis, giao thức tùy chỉnh), bạn cần proxy TCP thay vì routing HTTP. HAProxy thường được dùng cho TCP load balancing hiệu năng cao với kiểm soát kết nối tinh vi. Nginx cũng có thể proxy TCP (qua module stream), đủ cho các setup pass-through đơn giản.
Mutual TLS (mTLS)
mTLS xác thực hai chiều: client xuất trình chứng chỉ, không chỉ server. Thích hợp cho giao tiếp dịch vụ nội bộ, tích hợp với đối tác hoặc thiết kế zero-trust. Cả hai proxy đều có thể ép xác thực client cert ở edge, và nhiều đội cũng dùng mTLS nội bộ giữa proxy và upstream để giảm giả định “mạng đáng tin cậy”.
Quan sát: logging, metrics và debug
Reverse proxy đứng giữa mọi request, nên thường là nơi tốt nhất để trả lời “chuyện gì đã xảy ra?” Quan sát tốt nghĩa là log nhất quán, một tập metric có tín hiệu cao và quy trình lặp lại để debug timeout và lỗi gateway.
Log cần thiết: access, error và thời gian upstream
Ít nhất, bật access logs và error logs trong production. Với access logs, bao gồm thời gian upstream để biết chậm do proxy hay do ứng dụng.
Trong Nginx, các trường phổ biến là $request_time, $upstream_response_time, $upstream_status. Trong HAProxy, bật chế độ log HTTP và ghi các trường thời gian (queue/connect/response) để tách “đợi slot backend” khỏi “backend chậm”.
Giữ logs có cấu trúc (JSON nếu được) và thêm request ID (từ header vào/hoặc tạo mới) để liên kết log proxy với log ứng dụng.
Metric bạn nên xuất
Dù bạn dùng Prometheus hay hệ thống khác, xuất tập thống nhất:
- Request và mã phản hồi (2xx/4xx/5xx)
- Bộ đếm lỗi (retries, failed health checks, 502/504)
- Latency (p50/p95/p99; ưu tiên tách proxy và upstream)
- Kết nối (active, queued, rejected)
Nginx thường dùng stub status hoặc exporter Prometheus; HAProxy có stats endpoint tích hợp mà nhiều exporter đọc.
Endpoint health và readiness
Expose endpoint nhẹ /health (process đang chạy) và /ready (có thể tiếp cận phụ thuộc). Dùng cả hai trong automation: health check của load balancer, deployments và auto-scaling.
Debug timeout, reset, 502/504
- 502: backend từ chối/đóng kết nối, vấn đề DNS, hoặc mismatch giao thức.
- 504: proxy timeout khi chờ backend.
- Reset/timeout: kiểm tra keep-alive, backend bị bão hòa, và độ dài hàng đợi.
Khi debug, so sánh thời gian proxy (queue/connect) với upstream response time. Nếu queue/connect cao, tăng capacity hoặc điều chỉnh cân bằng tải; nếu upstream time cao, tập trung vào ứng dụng và database.
Cấu hình và vận hành hàng ngày
Vận hành reverse proxy không chỉ là đỉnh throughput—mà còn là khả năng đội ngũ thay đổi an toàn vào lúc 2 giờ chiều (hoặc 2 giờ sáng).
Kiểu cấu hình và onboarding
Cấu hình Nginx theo chỉ thị và có cấu trúc phân cấp. Nó đọc như “khối trong khối” (http → server → location), nhiều người thấy dễ tiếp cận khi nghĩ theo site và route.
Cấu hình HAProxy mang tính “pipeline”: định nghĩa frontend (nhận gì), backend (gửi tới đâu) rồi gắn luật (ACL) để nối hai phần. Khi quen, mô hình này rõ ràng và dễ dự đoán, đặc biệt cho logic định tuyến lưu lượng.
Reload và quản lý thay đổi triển khai
Nginx thường reload bằng cách khởi tạo worker mới và drain worker cũ một cách nhẹ nhàng. Thân thiện với cập nhật route và renew chứng chỉ thường xuyên.
HAProxy cũng có reload seamless, nhưng đội ngũ thường đối xử nó như một “appliance”: kiểm soát thay đổi chặt hơn, config có version rõ ràng và phối hợp cẩn thận khi reload.
Validation, template và giữ DRY
Cả hai đều hỗ trợ test config trước khi reload (bắt buộc trong CI/CD). Thực tế bạn sẽ giữ config DRY bằng cách tạo ra chúng:
- Dùng template (Helm, Ansible, Terraform hoặc tooling nội bộ)
- Giữ snippets dùng chung cho logging, headers, timeouts và defaults bảo mật
Thói quen vận hành then chốt: coi config proxy như code—review, test và deploy như thay đổi ứng dụng.
Vận hành quy mô: nhiều app, route và chứng chỉ
Khi số dịch vụ tăng, việc quản lý chứng chỉ và định tuyến mới là khó khăn thực sự. Lên kế hoạch cho:
- Quy ước đặt tên và ownership (ai quản hostname nào)
- Tự động cấp/rotate chứng chỉ
- Quy ước rõ ràng cho timeouts và retries theo từng app
Nếu mong đợi hàng trăm host, hãy tập trung hóa pattern và sinh config từ metadata dịch vụ thay vì sửa tay.
Nơi Koder.ai phù hợp trong quy trình này
Nếu bạn xây dựng và lặp trên nhiều dịch vụ, reverse proxy chỉ là một phần của pipeline giao hàng—bạn vẫn cần scaffolding ứng dụng lặp lại, parity môi trường và rollout an toàn.
Koder.ai giúp đội ngũ đi nhanh hơn từ “ý tưởng” tới dịch vụ chạy được bằng cách tạo React web app, backend Go + PostgreSQL, và app Flutter qua workflow chat, sau đó hỗ trợ xuất mã nguồn, triển khai/hosting, miền tùy chỉnh, và snapshots với rollback. Thực tế, bạn có thể prototype API + frontend, triển khai, rồi quyết định Nginx hay HAProxy là cửa trước phù hợp dựa trên lưu lượng thực tế thay vì phỏng đoán.
Câu hỏi thường gặp
What’s the difference between a reverse proxy and a forward proxy?
Một reverse proxy đứng trước các ứng dụng của bạn: client kết nối đến proxy, proxy chuyển yêu cầu tới backend phù hợp rồi trả phản hồi về cho client.
Một forward proxy đứng trước client và kiểm soát truy cập ra internet (thường gặp trong mạng công ty).
Is a load balancer the same thing as a reverse proxy?
Một load balancer tập trung vào việc phân phối lưu lượng qua nhiều backend. Nhiều load balancer được hiện thực như reverse proxy, vì vậy hai khái niệm thường chồng lấn.
Trong thực tế, bạn thường dùng một công cụ (ví dụ Nginx hoặc HAProxy) để vừa làm reverse proxy vừa làm load balancing.
Where should a reverse proxy sit in an architecture?
Đặt proxy ở nơi bạn muốn có một điểm kiểm soát duy nhất:
- Edge (internet công cộng → hệ thống của bạn): TLS termination, định tuyến, bảo vệ cơ bản, ghi log nhất quán.
- Nội bộ (service → service): điều tiết lưu lượng, quản lý kết nối và rollout an toàn.
Điểm then chốt là tránh để client truy cập trực tiếp vào backend để proxy luôn là điểm thắt cho chính sách và quan sát.
What does “TLS/SSL termination” mean, and why is it useful?
TLS termination nghĩa là proxy xử lý HTTPS: nó chấp nhận kết nối mã hóa từ client, giải mã rồi chuyển tiếp lưu lượng tới upstream bằng HTTP hoặc TLS được mã hóa lại.
Về vận hành, bạn cần:
- Tự động cấp/renew chứng chỉ (thường ACME/Let’s Encrypt)
- Lưu trữ private key an toàn
- Reload cấu hình an toàn mà không làm rớt kết nối đang hoạt động
When is Nginx usually the better choice?
Chọn Nginx khi proxy của bạn cũng là “cửa trước” cho web:
- Phục vụ tệp tĩnh hiệu quả
- Caching (micro-cache, cache phản hồi) để giảm tải backend
- Định tuyến HTTP đơn giản (host/path), redirect và chuẩn hóa header
- Cấu hình HTTP thuận tiện cho các stack web thông dụng
When is HAProxy usually the better choice?
Chọn HAProxy khi quản lý lưu lượng và tính ổn định dưới tải là ưu tiên:
- Xử lý nhiều kết nối đồng thời hiệu quả
- Kiểm soát cân bằng tải chi tiết và nhiều thuật toán
- Health checks phong phú và cơ chế failover an toàn
- Proxy TCP (Layer 4) như một trường hợp sử dụng chính bên cạnh HTTP (Layer 7)
How do I choose between round-robin, least-connections, and weighted balancing?
Dùng round-robin cho backend tương đồng và chi phí request đều nhau.
Dùng least connections khi thời lượng request biến thiên (tải xuống, API lâu, kết nối dài) để tránh quá tải máy chậm.
Dùng weighted khi backend khác nhau (kích thước instance, phần cứng khác nhau, migration dần) để điều phối lưu lượng chủ đích.
Do I need session persistence (sticky sessions), and which type is best?
Stickiness giữ người dùng trên cùng một backend qua nhiều request.
- Ưu tiên cookie-based cho web app (rõ ràng và công bằng qua NAT).
- Cẩn trọng với source-IP (nhiều người dùng cùng IP sau NAT/CDN sẽ bị gom chung).
Nếu có thể, tránh dùng sticky — dịch vụ stateless dễ scale và rollback hơn.
How can proxy buffering affect latency and streaming workloads?
Buffering có thể giúp bằng cách làm mượt client chậm hoặc bursty để app nhận traffic ổn định hơn.
Nó có thể gây hại khi bạn cần streaming (SSE, WebSocket, tệp lớn) vì buffering thêm áp lực bộ nhớ và tăng độ trễ tail.
Với workload stream, hãy test và tinh chỉnh buffering thay vì để mặc định.
How should I troubleshoot 502/504 errors and timeouts?
Bắt đầu bằng cách tách thời gian chờ của proxy và backend qua logs/metrics.
Các ý nghĩa thường gặp:
- 502: backend từ chối/đóng kết nối, lỗi DNS hoặc mismatch giao thức.
- 504: proxy hết thời gian chờ khi chờ backend.
Các tín hiệu hữu ích: thời gian queue/connect (proxy không tìm được backend nhanh), thời gian phản hồi upstream (backend chậm). Sửa thường bằng cách điều chỉnh timeout, tăng tài nguyên backend, hoặc cải thiện health checks/readiness.