Error 522 Connection Timed Out không do máy chủ web của bạn tạo ra. Nó đến từ Cloudflare đứng phía trước, và nghĩa là Cloudflare đã thử mở kết nối tới máy chủ gốc của bạn nhưng quá trình bắt tay TCP không hoàn tất kịp thời hạn.
Tin tốt là nó cụ thể hơn vẻ ngoài rất nhiều. Cloudflare có bốn mã lỗi khác nhau cho các vấn đề phía máy chủ gốc, mỗi mã trỏ vào một đoạn khác nhau của đường đi. Biết vì sao bạn nhận 522 chứ không phải 521 hay 524 đã loại bỏ một nửa số nguyên nhân trước khi bạn động tay vào bất cứ thứ gì.
Bài này tách bạch bốn mã đó, rồi đi qua các nguyên nhân của 522 theo đúng thứ tự tần suất thực tế — và nguyên nhân phổ biến nhất chỉ mất khoảng năm phút để xử lý nếu biết chỗ cần nhìn.
521, 522, 523, 524 không phải cùng một chuyện
Bảng này là phần hữu ích nhất của bài, vì con số đã cho biết đường đi đứt ở đâu.
| Mã | Chuyện gì đã xảy ra | Chỉ về đâu |
|---|---|---|
| 521 Web Server Is Down | Máy chủ gốc chủ động từ chối kết nối (gửi RST) | Máy chủ web không chạy, hoặc firewall đặt REJECT |
| 522 Connection Timed Out | Bắt tay không hoàn tất; không có hồi đáp kịp | Firewall vứt gói tin, hoặc máy chủ quá tải không nhận kịp |
| 523 Origin Is Unreachable | Cloudflare không định tuyến tới máy chủ gốc được | DNS trỏ sai IP, hoặc IP đó không tồn tại |
| 524 A Timeout Occurred | Kết nối tốt, nhưng ứng dụng mất hơn 100 giây | Script chậm, truy vấn nặng, tác vụ dài |
Nguyên nhân số một: firewall của bạn đang chặn Cloudflare
Đây là nguyên nhân phổ biến nhất của 522, và cũng là nguyên nhân dễ khắc phục nhất.
Khi website nằm sau Cloudflare, mọi request tới máy chủ của bạn đều xuất phát từ IP của Cloudflare chứ không phải của khách truy cập. Nếu firewall hoặc công cụ chống xâm nhập quyết định chặn những địa chỉ đó — điều rất dễ xảy ra, vì toàn bộ lưu lượng giờ đến từ một nhúm IP và trông hệt như một cuộc tấn công — website sẽ trả về 522 ngay lập tức.
Thủ phạm quen thuộc là fail2ban, CSF, mod_evasive, hoặc lớp chống xâm nhập tích hợp trong các bảng điều khiển như DirectAdmin. Chúng thấy hàng nghìn request từ một địa chỉ và tự động cấm. Kết quả là website sập từng đợt rồi tự hồi phục khi lệnh cấm hết hạn — một triệu chứng cực kỳ khó chẩn đoán nếu không biết phải nhìn vào đây.
Cách xử lý: thêm toàn bộ dải IP Cloudflare công bố vào allowlist của firewall và của mọi công cụ chống xâm nhập bạn đang chạy. Cloudflare công bố các dải này và thỉnh thoảng cập nhật, nên hãy kéo về tự động thay vì dán một lần rồi thôi.
Các nguyên nhân ít gặp hơn
- Máy chủ không nhận kịp kết nối mới. Khi tải nặng, hàng đợi accept đầy và gói tin mới bị vứt lặng lẽ, tạo ra đúng lỗi này. Kiểm tra load average và số worker đã cấu hình.
- Cạn bộ nhớ và OOM killer ra tay. Triệu chứng tương tự — sập từng đợt — và xác nhận bằng "dmesg | grep -i oom".
- DNS trên Cloudflare trỏ tới IP cũ. Hay gặp sau khi chuyển máy chủ mà quên cập nhật bản ghi A. Nếu địa chỉ đó vẫn có máy khác trả lời thì bạn nhận 522; nếu không có gì ở đó thì thường là 523.
- Máy chủ web nghe sai cổng hoặc bind sai địa chỉ. Dịch vụ bind vào 127.0.0.1 thay vì 0.0.0.0 chỉ nhận kết nối nội bộ và từ chối mọi thứ từ bên ngoài, bao gồm cả Cloudflare.
- Sự cố tạm thời ở nhà mạng của máy chủ. Không sửa được từ phía bạn, nhưng xác nhận được bằng cách kết nối trực tiếp tới IP từ một máy khác.
- Cloudflare đặt Full (strict) trong khi chứng chỉ trên máy chủ gốc đã hết hạn. Thường ra 526, nhưng một số cấu hình lại biểu hiện thành lỗi kết nối.
Kiểm tra theo thứ tự này
- Kiểm tra allowlist Cloudflare trước tiên, ở cả firewall lẫn fail2ban/CSF. Đây là nguyên nhân phổ biến nhất và chỉ mất một phút để loại trừ.
- Kết nối thẳng tới máy chủ, bỏ qua Cloudflare. Dùng curl tới IP thật kèm Host header. Nếu được thì máy chủ ổn và vấn đề nằm trên đường đi.
- Xác nhận thực sự có thứ gì đang lắng nghe. Chạy "ss -tlnp" và kiểm tra máy chủ web bind ở 0.0.0.0 cổng 80 và 443, không phải 127.0.0.1.
- Kiểm tra tải và bộ nhớ bằng "uptime" và "free -h". Tải cao bất thường hoặc bộ nhớ trống ít nghĩa là vấn đề nằm ở năng lực, không phải cấu hình.
- Đọc log máy chủ web đúng thời điểm xảy ra. Nếu log trống trong lúc bị 522, request chưa từng tới được máy chủ — điều đó xác nhận nó bị chặn từ trước.
- Xác minh bản ghi A trên Cloudflare trỏ đúng IP hiện tại, nhất là sau khi chuyển máy chủ.
Phòng ngừa
- Tự động hóa việc làm mới allowlist Cloudflare. Các dải công bố thỉnh thoảng đổi, nên bản sao chép một lần sẽ âm thầm hỏng sau vài tháng.
- Cấu hình máy chủ web đọc IP thật của khách bằng ngx_http_realip_module hoặc mod_remoteip. Khi đó công cụ chống xâm nhập thấy địa chỉ khách thật thay vì địa chỉ Cloudflare, loại bỏ hoàn toàn nguyên nhân gây cấm nhầm.
- Chạy giám sát uptime có cảnh báo. 522 thường xuất hiện từng đợt và tự hết trước khi bạn kịp nhận ra.
- Theo dõi bộ nhớ và tải với cảnh báo đặt dưới ngưỡng giới hạn, thay vì biết tin khi website đã sập.
- Bật dịch vụ bằng "systemctl enable" để chúng sống sót qua khởi động lại.
- Giữ sẵn IP gốc của máy chủ để kiểm thử, để có thể bỏ qua Cloudflare ngay khi có sự cố.
Muốn toàn quyền với firewall và log của mình?
Cloud VPS NVMe với quyền root đầy đủ — tự quản allowlist Cloudflare, đọc log thật, có VNC khi một quy tắc khóa bạn ở ngoài. Từ ฿150/tháng.
Câu hỏi thường gặp
Error 522 là lỗi của Cloudflare hay của tôi?
Gần như luôn là của bạn. Cloudflare chỉ đang báo rằng nó không tới được máy chủ gốc. Lý do phổ biến nhất là firewall hoặc công cụ chống xâm nhập trên máy chủ đang chặn các địa chỉ IP của Cloudflare, nên hãy kiểm tra allowlist đó trước mọi thứ khác.
521 và 522 khác nhau thế nào?
521 nghĩa là máy chủ chủ động từ chối kết nối, thường vì máy chủ web không chạy hoặc firewall đặt REJECT. 522 nghĩa là hoàn toàn không có hồi đáp trước khi hết thời gian, thường do firewall vứt gói tin hoặc máy chủ quá tải không nhận nổi kết nối mới.
Vì sao 522 xuất hiện rồi tự biến mất?
Có hai khả năng chính. Hoặc công cụ chống xâm nhập như fail2ban đang tạm cấm địa chỉ Cloudflare rồi thả ra khi hết hạn, hoặc máy chủ gặp các đỉnh tải khiến nó không nhận nổi kết nối mới. Hãy xem log fail2ban và biểu đồ tải vào đúng những khoảng thời gian đó.
Tắt Cloudflare có hết lỗi không?
Lỗi sẽ biến mất, vì 522 do Cloudflare tạo ra. Nhưng vấn đề chưa chắc được giải quyết — nếu nguyên nhân thật là máy chủ không chịu nổi tải, khách truy cập giờ sẽ gặp thẳng tình trạng chậm hoặc kết nối thất bại. Hãy dùng nó như một bước chẩn đoán, không phải giải pháp.
GUIDES
Bài viết liên quan
Đọc tiếp các chủ đề tương tự
502 Bad Gateway — Ý nghĩa và cách khắc phục
502 nghĩa là một máy chủ đã hỏi máy chủ khác để lấy trang và nhận về thứ không dùng được. Bài này giải thích hai máy nào đang liên quan, khác biệt với 500 và 504, cùng thứ tự kiểm tra để bạn tìm đúng nguyên nhân trước tiên.
Đọc tiếpERR_CONNECTION_REFUSED — Nguyên nhân và cách khắc phục
Lỗi này hữu ích hơn vẻ ngoài của nó. "Từ chối" nghĩa là có thứ gì đó đã trả lời và chủ động khước từ bạn — điều này loại bỏ ngay cả một nhóm nguyên nhân mà lỗi timeout vẫn để ngỏ.
Đọc tiếp504 Gateway Timeout — Nguyên nhân và cách khắc phục
504 không phải backend chết, mà là backend còn sống nhưng quá chậm. Điều đó đổi hoàn toàn chỗ bạn cần tìm: không phải log crash, mà là truy vấn hoặc lệnh gọi bên ngoài đang chạy lâu hơn thời gian máy chủ chịu chờ.
Đọc tiếp