504 gateway timeout: 12 cách khắc phục nhanh, dễ làm
504 gateway timeout xuất hiện khi máy chủ trung gian không nhận được phản hồi kịp thời từ máy chủ phía sau. Trong bài viết này, ProxyVN sẽ cùng anh em kiểm tra từ trình duyệt, proxy, DNS đến WordPress, CDN, Apache và Nginx. Các bước được sắp xếp từ cơ bản đến chuyên sâu, giúp người dùng xử lý nhanh và quản trị viên tránh chỉnh sửa cấu hình thiếu căn cứ.
504 gateway timeout là gì và cách nhận biết?
Theo tài liệu về mã trạng thái HTTP 504 của MDN, lỗi này xảy ra khi máy chủ đang đóng vai trò gateway hoặc proxy không nhận được phản hồi đúng hạn từ upstream server.

Lỗi 504 gateway timeout khi dùng proxy
Nói đơn giản, trình duyệt đã gửi yêu cầu nhưng một máy chủ trung gian phải chờ máy chủ phía sau quá lâu. Khi vượt quá thời gian chờ được cấu hình, máy chủ trung gian trả về mã HTTP 504.
Thời gian chờ không cố định ở 30 giây. Con số này phụ thuộc vào CDN, reverse proxy, web server, ứng dụng và nhà cung cấp hosting.
Một số thông báo thường gặp gồm:
-
504 Gateway Timeout.
-
504 Gateway Timeout NGINX.
-
NGINX 504 Gateway Timeout.
-
HTTP Error 504 – Gateway Timeout.
-
Error 504.
-
Gateway Timeout Error.
-
The server didn’t respond in time.
-
Trang web mất quá nhiều thời gian để phản hồi.
Anh em cũng cần phân biệt lỗi 504 với các mã HTTP gần giống:
-
502 Bad Gateway: gateway nhận được phản hồi không hợp lệ từ máy chủ nguồn.
-
503 Service Unavailable: máy chủ tạm thời không thể phục vụ, thường do bảo trì hoặc quá tải.
-
500 Internal Server Error: ứng dụng hoặc máy chủ phát sinh lỗi nội bộ.
-
404 Not Found: máy chủ không tìm thấy tài nguyên được yêu cầu.
Như vậy, dấu hiệu quan trọng của lỗi 504 là gateway đã chờ nhưng upstream server không phản hồi kịp thời.
Nguyên nhân gây 504 gateway timeout
Lỗi có thể xuất phát từ thiết bị người dùng, đường truyền hoặc hạ tầng website. Tuy nhiên, phần lớn trường hợp kéo dài cần được kiểm tra ở phía máy chủ.
Các nguyên nhân phổ biến gồm:
-
Máy chủ nguồn quá tải CPU, RAM hoặc tiến trình PHP.
-
Truy vấn cơ sở dữ liệu chạy chậm hoặc bị khóa.
-
Kết nối giữa CDN, proxy và máy chủ nguồn không ổn định.
-
DNS trỏ sai IP hoặc chưa cập nhật đồng đều.
-
Proxy được nhập sai địa chỉ, cổng hoặc thông tin xác thực.
-
Plugin, theme hoặc ứng dụng gửi quá nhiều yêu cầu.
-
Bot, spam hoặc DDoS làm cạn tài nguyên máy chủ.
-
Timeout của Nginx, Apache, PHP-FPM hoặc CDN chưa phù hợp.
-
Máy chủ nguồn, dịch vụ API hoặc phần cứng gặp sự cố.
Một kinh nghiệm khoanh vùng hữu ích là kiểm tra phạm vi ảnh hưởng. Nếu chỉ một thiết bị gặp lỗi, hãy ưu tiên mạng, DNS và proxy. Nếu mọi người đều gặp lỗi, cần chuyển sang kiểm tra CDN, log và máy chủ nguồn.
12 cách sửa lỗi 504 gateway timeout
Anh em nên thực hiện lần lượt các bước dưới đây. Sau mỗi thay đổi, hãy kiểm tra lại website để xác định chính xác thao tác nào tạo ra khác biệt.
1. Tải lại trang web
Trước tiên, hãy chờ khoảng một phút rồi nhấn F5 để tải lại trang. Trên Windows, anh em có thể dùng Ctrl + F5 để yêu cầu trình duyệt tải lại tài nguyên thay vì dùng bản cache cũ.

Ctrl + F5 tải lại tài nguyên web
Sau đó, hãy thử cửa sổ ẩn danh hoặc trình duyệt khác. Nếu website hoạt động trở lại, nguyên nhân có thể chỉ là tình trạng quá tải tạm thời.
2. Khởi động lại thiết bị mạng
Modem hoặc router hoạt động thiếu ổn định cũng có thể làm gián đoạn kết nối. Anh em hãy tắt thiết bị, chờ khoảng 30 giây rồi bật lại.
Nếu có nhiều thiết bị mạng, hãy bật modem của nhà cung cấp trước. Tiếp theo mới khởi động router, bộ mở rộng sóng và máy tính. Trình tự này giúp các thiết bị nhận lại kết nối và địa chỉ mạng đúng cách.
3. Kiểm tra cài đặt proxy
Proxy hiếm khi là nguyên nhân chính của lỗi 504 trên website. Tuy nhiên, địa chỉ proxy sai, cổng đóng, thông tin xác thực lỗi hoặc node mất kết nối vẫn có thể làm yêu cầu bị treo.
Anh em có thể tạm tắt proxy và thử truy cập trực tiếp. Nếu lỗi biến mất, hãy kiểm tra IP, port, giao thức HTTP/SOCKS và tài khoản xác thực.
Khi vận hành nhiều tài khoản hoặc công cụ, nên chọn proxy chất lượng, mạng ổn định và có hỗ trợ kỹ thuật 24/24. Điều này giúp giảm tình trạng tool mất kết nối hoặc gửi yêu cầu qua node không còn hoạt động.
4. Kiểm tra và làm mới DNS
Nếu website vừa đổi máy chủ, bản ghi DNS có thể chưa cập nhật đồng đều. Anh em nên kiểm tra tên miền đã trỏ đúng IP trước khi thay đổi cấu hình máy chủ.

Làm mới DNS
Trên Windows, mở Command Prompt bằng quyền quản trị rồi chạy:
ipconfig /flushdns
Đây là tham số được Microsoft mô tả trong tài liệu lệnh ipconfig.
Trên macOS, mở Terminal và chạy:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Sau đó, hãy thử DNS công cộng như Cloudflare 1.1.1.1 hoặc Google 8.8.8.8 để loại trừ lỗi từ DNS của nhà mạng.
5. Tạm dừng CDN
CDN có thể không kết nối được với máy chủ gốc do sai IP, lỗi SSL, firewall chặn hoặc origin quá chậm. Hãy tạm chuyển CDN sang chế độ chỉ phân giải DNS, nếu nhà cung cấp hỗ trợ.
Với WordPress, anh em cũng có thể tạm tắt plugin kết nối CDN hoặc cache. Nếu không vào được trang quản trị, hãy đổi tên thư mục plugin qua SFTP. Sau đó, kiểm tra website trước khi bật lại CDN.
6. Kiểm tra bot và lưu lượng bất thường
Bot spam hoặc DDoS có thể tạo lượng yêu cầu lớn, khiến CPU, RAM và PHP worker bị sử dụng hết. Vì vậy, hãy xem biểu đồ lưu lượng, access log và số kết nối đồng thời.
Nếu phát hiện nhiều yêu cầu lặp lại từ một nhóm IP hoặc URL, hãy áp dụng rate limiting, firewall hoặc công cụ chống bot. Tuy nhiên, cần tránh chặn quá rộng vì có thể ảnh hưởng người dùng hợp lệ và công cụ tìm kiếm.
7. Kiểm tra cơ sở dữ liệu WordPress
Cơ sở dữ liệu chậm hoặc bảng bị lỗi có thể khiến PHP chờ quá lâu. Anh em nên sao lưu website trước, sau đó kiểm tra truy vấn chậm, dung lượng bảng và tình trạng database.
Không nên sửa cơ sở dữ liệu chỉ dựa trên thông báo 504. Trước hết, hãy xem log MySQL/MariaDB và thử vô hiệu hóa tác vụ gây tải. Nếu không có kinh nghiệm quản trị database, nên liên hệ đơn vị hosting hỗ trợ.
8. Kiểm tra tài nguyên máy chủ
Hãy kiểm tra CPU, RAM, dung lượng ổ đĩa, PHP worker và số kết nối. Nếu tài nguyên liên tục đạt ngưỡng cao, việc tải lại trang chỉ xử lý phần ngọn.
Với website thương mại điện tử, trang thanh toán và truy vấn tồn kho thường không thể cache như trang tĩnh. Khi lưu lượng tăng, anh em có thể cần tối ưu ứng dụng, cache hợp lý, nâng tài nguyên hoặc triển khai cân bằng tải.
9. Tắt plugin và theme
Trên WordPress, một plugin lỗi có thể tạo truy vấn chậm hoặc gọi API bên ngoài quá lâu. Hãy tắt toàn bộ plugin, sau đó kích hoạt lại từng plugin và kiểm tra website sau mỗi lần bật.
Nếu vẫn còn lỗi, hãy tạm chuyển sang theme mặc định. Đồng thời, cập nhật WordPress core, plugin, theme và PHP lên phiên bản tương thích. Không nên cập nhật trực tiếp trên website đang vận hành nếu chưa có bản sao lưu.
10. Đọc log để tìm điểm nghẽn
Log thường cho biết upstream nào bị chậm, URL nào gây lỗi và tiến trình nào đã hết thời gian chờ. Các vị trí phổ biến gồm:
-
Nginx:
/var/log/nginx/error.log -
Apache trên Ubuntu/Debian:
/var/log/apache2/error.log -
WordPress:
/wp-content/debug.log
Để bật log WordPress, thêm các dòng sau trước dòng kết thúc chỉnh sửa trong wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Cách cấu hình này phù hợp với hướng dẫn debug chính thức của WordPress. Sau khi xử lý xong, hãy tắt chế độ debug trên website production.
11. Điều chỉnh Apache, Nginx và PHP-FPM
Chỉ tăng timeout sau khi xác định tác vụ hợp lệ cần thêm thời gian. Với Apache, có thể chỉnh trong cấu hình máy chủ:
TimeOut 300
Theo tài liệu Apache HTTP Server, giá trị mặc định của chỉ thị này là 60 giây. Sau khi sửa, hãy kiểm tra cấu hình trước khi reload dịch vụ.
Với Nginx và PHP-FPM, có thể cân nhắc:
fastcgi_read_timeout 300s;
Tài liệu FastCGI của Nginx lưu ý rằng timeout này được tính giữa hai lần đọc liên tiếp, không phải toàn bộ thời gian truyền phản hồi.
Tăng timeout chỉ kéo dài thời gian chờ. Thao tác này không xử lý truy vấn chậm, thiếu tài nguyên hoặc ứng dụng bị treo.
12. Cấu hình Nginx reverse proxy
Nếu Nginx làm reverse proxy, anh em có thể điều chỉnh timeout trong đúng khối server hoặc location:
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
Tiếp theo, kiểm tra rồi tải lại Nginx:
sudo nginx -t
sudo systemctl reload nginx
Theo tài liệu proxy chính thức của Nginx, proxy_read_timeout đo khoảng chờ giữa hai lần đọc dữ liệu từ upstream. Vì vậy, cần tìm nguyên nhân upstream im lặng thay vì chỉ đặt một giá trị thật lớn.
Nhìn chung, anh em nên kiểm tra lần lượt trình duyệt, mạng, proxy, DNS, CDN, ứng dụng và log máy chủ. Nếu cần kết nối ổn định cùng hỗ trợ kỹ thuật 24/24, hãy theo dõi Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam. Proxy tốt giúp giảm rủi ro mất kết nối, nhưng đọc log vẫn là bước quan trọng để xử lý đúng 504 gateway timeout.