Lỗi 502 Bad Gateway, xảy ra là do server web bị lỗi chứ không phải như những bài viết trên mạng cho rằng là do cache trình duyệt rồi thì vâng vâng
Lỗi 502 Bad Gateway là một thông báo lỗi phổ biến khi trình proxy server không thể nhận được phản hồi hợp lệ từ server upstream. Điều này có thể xảy ra khi có sự cố xảy ra trên server hoặc trên đường truyền mạng giữa proxy server và server.
Mặc dù lỗi 502 Bad Gateway có thể gây khó chịu cho người dùng, nhưng may mắn là nó có thể được khắc phục. Dưới đây là một số cách để xử lý lỗi này:
Nói chung nếu anh chị xài share hosting thì phải liên hệ nơi cung cấp hosting để xử lý còn nếu anh chị xài vps có toàn quyền thì đây là cách xử lý
Như anh chị biết để chạy được 1 website thì cần các thành phần chính nginx hoặc apache – php – mysql, vậy nên nếu 1 trong 3 dịch vụ trên vì nguyên nhân nào đó không chạy sẽ gây lỗi mà lỗi thường là do dịch vụ php
Giải thích cho anh chị hiểu thôi còn cách khắc phục thì như sau, đăng nhập ssh và gõ 3 lệnh sau
1 2 3 |
sudo systemctl restart php-fpm service nginx restart sudo systemctl restart mariadb |
Chạy từng lệnh 1 và sau đó kiểm tra xem web chạy chưa, nếu chạy rồi thì không cần các dòng lệnh kế tiêp
Còn vps sử dụng apache thì thay dòng service nginx restart bằng sudo systemctl restart httpd.service
Đấy là cách khắc phục tạm thời, sau đây tôi xin chia sẽ cách khắc phục tốt hơn
Phương án tối ưu đó là tạo một crontab mỗi phút chạy một lần kiểm tra xem domain url có trả về 502 hay không và nếu có thì chạy 3 dòng lệnh trên, cách này là tôi ưu nhất vì web sẽ nếu có lỗi thì khoản 1 phút là chạy lại rồi
Tạo file 502.sh và phần quyền 0777, bạn có thể đặt file này bất kỳ đâu bạn muốn
1 2 3 4 |
#chuyen toi folder root cd /root #tao file 502.sh touch 502.sh |
Rồi gõ nội dung sau vào
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash CheckURL="https://abc.com" STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL` echo $STATUS_CODE if [[ "$STATUS_CODE" == '000' || "$STATUS_CODE" == '502' || "$STATUS_CODE" == '521' || "$STATUS_CODE" == '500' ]]; then /usr/bin/systemctl restart nginx /usr/bin/systemctl restart mariadb /usr/bin/systemctl restart php-fpm #Luu log echo "sap web vao luc: $(date)" >> /home/abc.com/logs/502.txt fi |
Nhơ thay abc.com bằng domain của bạn
Tại sao phải chạy thử đôi lúc nó bị lỗi ký chứa ký tự đặc biệt, để tesh
bạn gõ : bash /root/502.sh, nếu không báo lỗi gì tứ là chạy ok, nếu báo lỗi bạn sẽ fix như sau
1 |
sed -i 's/\r$//' /root/502.sh |
đoạn lện trên sẽ xóa các ký tự đặc biệt gây ra lỗi trong file 502.sh
Kế tiếp chúng ta sẽ viết lệnh crontab chạy file 502.sh
1 2 3 |
crontab -e //bấm phím i, sau đó dùng con trỏ di chuyển về cuối enter để xuống dòng và copy lệnh sau vào * * * * * bash /root/502.sh >/dev/null 2>&1 |
Ấn phím esc và gõ vào :wq (lưu và thoát)
Hi vọng với bài viết này sẽ giúp anh chị giải quyết được lỗi 502
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress