• Nguyên nhân và cách sửa lỗi 502 bad gateway trên Nginx

  • Thông báo lỗi bạn gặp và mọi người giúp fix.

Thông báo lỗi bạn gặp và mọi người giúp fix.
 #37  by funvn
 28 May 2018 17:45
Trong thời gian gần đây mình thấy trên nhiều diễn đàn và blog thảo luận về VPS và Server, có rất nhiều topic liên quan tới chủ để lỗi 502 bad gateway trên máy chủ có cài đặt Nginx. Mình cũng gặp lỗi này một lần khi test VPSSIM . Mình không hiểu tại sao không phải lúc nào trên VPS cũng xuất hiện lỗi này. Tuy nhiên nguyên nhân của lỗi này không phải trên VPS nào cũng giống nhau. Vì vậy mình viết bài này tổng hợp các cách chữa lỗi 502 bad gateway. Nếu bạn gặp lỗi này, bạn có thử một trong những cách dưới. Mình nghĩ sẽ khắc phục được.

Nguyên nhân và cách sửa lỗi 502 bad gateway trên Nginx
Nguyên nhân và cách sửa lỗi 502 bad gateway trên Nginx

Lỗi 502 bad gateway xuất hiện khi :
1. Nginx chạy như một proxy cache cho máy chủ Apache
2. Nginx chạy cùng với ứng dụng Php-FPM
3. Ngix chạy với dịch vụ khác và hoạt động với vai trò là gateway
4. Cấu hình không tốt buffering/timeout

Trước khi tìm hiểu kỹ về tất cả các trường hợp trên, ta sẽ tìm hiểu lỗi 502 bad gateway nghĩa là gì. Vâng, nó là một số 502 và lỗi này xảy ra tại gateway. Vậy gateway là gì? nó có thể là một dịch vụ/phần mềm đang hoạt động và đang nhận các request – yêu cầu từ Nginx web server.
Bây giờ ta sẽ giải thích nguyên nhân xuất hiện lỗi 502 bad gateway trong các trường hợp trên nhé !

1. Nginx chạy là một dich vụ proxy cho Apache.: Trong trường hợp này, gateway là apache. Khi bạn sử dụng Nginx làm proxy cho Apache, nếu Apache die hay nó không được cấu hình tốt, nó có thể là gây là lỗi 502. Vậy ta có thể sửa lỗi 502 bad gateway trong trường hợp này như thế nào? có thể bạn chỉ cần khởi động lại Apache web server là được, tuy nhiên bạn phải kiểm tra file logs để biết nguyên nhân chính xác gây ra lỗi này.
2. Nginx chạy cùng PHP-FPM: Cũng như trường hợp Apache , nguyên nhân có thể do php bị ngừng hoạt động hoặc nó bị quá tải khi xử lý các request. PHP-FPM hoạt động không chính xác và không thể xử lý tất cả các request từ Nginx, và lỗi 502 bad gateway xuất hiện. Và lần này, sửa lỗi bằng cách khởi động lại php-fpm và xem logs.
3. Nginx với các dịch vụ/ apps khác: Cố gắng khởi động lại các dịch vụ đó và kiểm tra log để tìm ra nguyên nhân lỗi.
4. Cấu hình không tốt buffering/timeout

Bạn thử một trong những cách sau:

1) tăng buffering/timeout trong http block:
http {
...
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
...
}
2) Chắc chắn dịch vụ php-fpm đang listening đúng như ta config trong nginx.

Chỉnh www.conf và vhost.conf ( trong centos: /etc/php-fpm.d/www.conf và /etc/nginx/conf.d/vhost.conf) Bạn thử thay sang trường hợp còn lại nếu trường hợp kia bị lỗi sau đó khởi động lại php-fpm. Lưu ý giá trị này trong www.conf và vhost.conf phải giống nhau.
listen = /var/run/php-fpm/php-fpm.sock
hoặc
listen = 127.0.0.1:9000
3) tắt APC Cache nếu nó đang sử dụng. Có thể APC cache là nguyên nhân gây ra lỗi này.
Get 25 USD Free To USE VPSSIM
Get 25 USD Free To USE VPSSIM