Cách khắc phục lỗi “502 Bad Gateway” trên nginx

Gần đây, sau khi dùng VPS của Linode khoảng 2 tuần để chạy blog Sáu Ngón mình rất hay bị lỗi “502 Bad Gateway” trên nginx. Một ngày phải bị dăm ba lần, phải khởi động lại nginx và php-fpm rất bực mình.

Ban đầu thì VPS chạy rất ổn định, nhưng sau khi thêm một virtual hosts mới để chạy website khác của mình thì lỗi này bắt đầu xuất hiện. Cho nên mình đã tìm cách khắc phục, giờ nó cũng chạy ổn định được 2 ngày rồi, mình xin phép chia sẻ với các bạn.

502 Bad Gateway

Nguyên nhân

Lỗi này thường xuất hiện khi:

  1. Sử dụng nginx làm proxy cho Apache.
  2. nginx chạy cùng php-fpm.
  3. nginx chạy cùng với dịch vụ khác với vai trò là gateway.
  4. Cấu hình buffering/timeout chưa tốt.

Đối với VPS của Sáu Ngón, chạy nginx + php-fpm, PHP, MySQL trên CentOS 6.xtối ưu hóa tốc độ bằng Varnish cache. Xem xét lại các nguyên nhân:

  • Chạy nginx + php-fpm: chạy thời gian đầu với một virtual hosts thì ổn định, ko có vấn đề gì cả.
  • buffering/timeout chưa tốt: đây chính là lý do khiến VPS của Sáu Ngón cứ bị “502 Bad Gateway”.

Cách khắc phục

Mở file cấu hình của nginx:

vi /etc/nginx/nginx.conf

Thêm đoạn cấu hình sau vào trong http { }, nên đặt ở cuối cho dễ nhìn:

http {
    ...
    fastcgi_buffers         8 16k;
    fastcgi_buffer_size     32k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout    300;
    fastcgi_read_timeout    300;

    include /etc/nginx/conf.d/*.conf;
}

Nếu muốn tìm hiểu chuyên sâu hơn về các cấu hình trên, các bạn có về vào trang docs của nginx, họ nói rất rõ về các thông số của module ngx_http_fastcgi_module.

Khởi động lại nginx, cả php-fpm cho chắc chắn:

service php-fpm restart
service nginx restart

Lời kết

Trên đây là kinh nghiệm cá nhân của mình chia sẻ cho các bạn, chứ nó không phải là kiến thức chuẩn như trong sách. Nếu có điều gì chưa ổn mong các bạn góp ý để mình sửa lại bài viết, giúp các bạn đọc sau có lượng kiến thức tốt hơn.

Cảm ơn các bạn.

2 Responses

  1. thoáng qua says:

    trước hết là xin cám ơn bạn về phần hướng dẵn này, rất khác biệt với các hướng dẫn khác. tuy nhiên với những thuật ngữ như vậy thì ngoại đạo như mình không biết phỉa bnagwf cách nào cả. cám ơn bạn

Leave a Reply

Your email address will not be published. Required fields are marked *