RE: Lỗi 502 bad gateway? Cách fix lỗi 502 trên web

      Nguyên nhân của lỗi 502 bad gateway. Cách sữa lỗi 502 bad gateway? Em có làm một webiste server bằng nginx nhưng khi chạy web thì bị lỗi 502 ah. Mọi người hướng dẫn em sửa lỗi 502 bad gateway nginx với ah. em sử dụng nginx với php-fpm để dựng web.

      Trinh Ngọc Tiểu học Asked on 14 Tháng Ba, 2018 in Internet.
      Thêm bình luận
      2 Trả Lời

        Mình sẽ hướng dẫn các bạn fix lỗi 502 Bad Gateway Nginx nhé.

        Thỉnh thoảng khi cấu hình server web chúng ta thường thấy lỗi 502 bad gateway với nginx. Bạn sẽ tìm thấy được lỗi chi tiết trong phần logs của server web. Mã http thì cũng giống như mình đã nêu ở phần trên

        Những nguyên nhân chính dẫn đến lỗi 502 bad gateway nginx:

        Nginx làm proxy cho apache website service

        Nếu bạn dùng Nginx làm proxy cho Apache.  Khi Apache chết hoặc xữ lý không kịp luồn dữ liệu (overload ) sẽ xảy ra lỗi 502. Để sửa lỗi này bạn chỉ cần restart lại Apache server để web server của bạn thoát ra khỏi tình trạng overload tiến trình. Sau đó bạn hãy xem lại cấu hình web service của để tối ưu hoá nó nhé.

        Lệnh restart Apache

        /etc/init.d/httpd restart

        Bạn chưa start php-fpm

        Khi bạn kết hợp Nginx với Php-fpm. Nếu php-fpm của bạn chưa chạy thì sẽ xảy ra lỗi 502. Kiểm tra php-fpm có chạy hay không bạn sử dụng bên dưới.

        ps -aux | grep php-fpm

        Nếu kết quả hiển thị giống hình bên dưới thì có nghĩa là php-fpm đã chạy. Bạn hãy tìm hiểu thêm những lỗi được liệt kê phía bên dưới.

        root@web1:/var/log/nginx# ps -aux | grep php-fpm
        root 31191 0.0 1.7 133628 18108 ? Ss 20:41 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
        web1 31193 0.0 0.5 133628 5956 ? S 20:41 0:00 php-fpm: pool www
        web1 31194 0.0 0.5 133628 5956 ? S 20:41 0:00 php-fpm: pool www

        Nếu php-fpm không chạy bạn hãy start php-fpm nhé.

        Lệnh start php-fpm

        service php5-fpm start hoặc /etc/init.d/php5-fpm start

        Php-fpm không chạy

        Nếu php-fpm lỗi không chạy được thì cũng sẽ xuất hiện lỗi 502 bad gateway. Bạn có thể kiểm tra log server thể biết chi tiết lỗi

        root@web1:/var/log/nginx# tailf /var/log/nginx/error.log
        2018/03/16 10:55:30 [crit] 28451#24551: *6 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client:113.161.32.10, server: hoidaptructuyen.vn,request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "hoidaptructuyen.vn"
        2018/03/16 10:55:50 [crit] 28451#24551: *8 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client:113.161.32.10, server: hoidaptructuyen.vn,request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "hoidaptructuyen.vn"
        2018/03/16 10:56:00 [crit] 28451#24551: *16 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client:113.161.32.10, server: hoidaptructuyen.vn,request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:",host: "hoidaptructuyen.vn"

        Nếu xuất hiện lỗi như trên thì có nghĩa là var/run/php5-fpm.sock không được tìm thấy. Bạn hãy kiểm tra lại file  cấu hình php-fpm của mình xem php-fpm socket đã có quyền ghi vào thư mục chứa socket php-fpm chưa? và socket php-fpm đã có quyền chạy với user chạy php-fpm chưa?

        Bạn mở file cấu hình php-fpm và kiểm tra như bên dưới:

        vi /etc/php5/fpm/www.conf
        [www]
        user = web1
        group = web1

        listen = /var/run/php5-fpm.sock

        listen.owner = web1
        listen.group = web1

        Sau khi bạn đã chỉnh sửa đúng thông tin về: socket path, process owner/group, listen.owner/listen.group thì hãy start lại php-fpm nhé.

        Lênh start php-fpm

        service php5-fpm start  hoặc  /etc/init.d/php5-fpm start

        Nginx không thể kết nối với php-fpm

        Khi kiểm tra ở các bước trên tất cả điều chính xác thì kế tiếp bạn hãy kiểm tra cấu hình fastcgi_pass nginx xem đã kết nối với php-fpm chưa nhé

        vi /etc/nginx/nginx.conf

        http{


        server {
        ...
        location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$include fastcgi_params;
        }
        .....

        }

        Sau khi bạn chỉnh lại cấu hình fastcgi_pass thì hãy restart lại Nginx.

        Lệnh restart Nginx

        service nginx reload hoặc /etc/init.d/nginx reload

        Nginx timeout

        Ngoài những lỗi do config sai ra thì giới hạn thời gian xử lý của nginx và php-fpm cũng là lý do gây nên lỗi 502 bad gateway. Nguyên nhân của lỗi này là thời gian chờ của nginx hoặc php-fpm hết hạn với những tiến trình đồi hỏi thời gian xử lý lâu hơn.

        Để tăng giới hạn thời gian xử lý của php-fpm bạn hãy chỉnh max_execution_time trong file php.ini. Đơn vị thời gian tính bằng giây (s)

        Vi /etc/php5/fpm/php.ini

        max_execution_time = 300

        Tăng timeout, buffers và buffers size trong Nginx trên block http { … }

        vi /etc/nginx/nginx.conf
        http{
        ...
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        ...
        }

        Cuối cùng hãy restart lại NGINX  và PHP-FPM

        Lệnh restart NGINX

        service nginx reload hoặc /etc/init.d/nginx reload

        Lệnh restart php-fpm

        service php5-fpm start hoặc /etc/init.d/php5-fpm start

        Php-fpm timeout

        Nếu Nginx timeout của bạn đã tương đối cao và vẫn bị lỗi 502 bad bad gateway thì hãy tăng set_time_limit() trong code php nhé. Tham khảo thêm về set_time_limit() của php tại đây nhé: https://secure.php.net/manual/en/function.set-time-limit.php

        Chúc bạn thành công.

        Giáo Sư Đã trả lời on 16 Tháng Ba, 2018.
        Thêm bình luận

        Câu trả lời của bạn

        Khi tham gia trả lời bạn phải đồng ý với các điều khoản trên web site của chúng tôi: privacy policy and terms of service.