Dạo gần đây có nhiều bạn thông báo hay bị lỗi 502 Bad Gateway khi sử dụng Nginx, mình đã tìm hiểu qua thông tin và có được một số giải pháp để xử lý vấn đề này như sau.

– Mở file cấu hình Nginx:

nano /etc/nginx/nginx.conf

– Thêm đoạn cấu hình sau vào trong block http { }

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 với các thông số của module ngx_http_fastcgi_module rất cụ thể.

Khởi động lại nginx, php-fpm:

service nginx restart
service php-fpm restart

Nếu có kinh nghiệm nào xử lý lỗi 502 Bad Gateway, các bạn hãy chia sẻ thêm cho mọi người biết bằng cách để lại comment nhé.

Comment của bạn

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

162 Comments

  1. manhle 1 comment

    Cho em hỏi time out có bị limit không ạ
    Nếu mình muốn set 1 tiếng như này hoặc nhiều hơn được không ạ
    fastcgi_connect_timeout 3600;
    fastcgi_send_timeout 3600;
    fastcgi_read_timeout 3600;

  2. Tinhtiennet 21 comment

    Cảm ơn tác giả. Gần đây vps mình hay gặp lỗi 500 Internal Server. Nhưng khởi động lại vps thì hết. Mong tác giả chỉ dùm cách xử lý lỗi trên. Thanks!

    1. Việt Phương Moderator

      Bạn kiểm tra Nginx Conf của phongthuynguyenkhang.com trong /etc/nginx/conf.d
      1. Nếu không sử dụng website này nữa thì bạn xóa Nginx Conf đi
      2. Nếu vẫn sử dụng, bạn kiểm tra có tồn tại lại log trong /home/phongthuynguyenkhang.com/logs không
      2.1. Không tồn tại thì bạn # dòng quy định log trong Nginx Conf của phongthuynguyenkhang.com đi

      1. HUYNH LE DONG 2 comment

        Dạ,
        Cái web này mình xóa lâu rồi ạ.
        Với lệ, cho hỏi là mình vào cái này ở đâu ạ? (/etc/nginx/conf)
        Lính mới, ko biết vào chỗ nào để ra cái này.
        Đang dùng VPSSIM, chỉ biết nhập lệnh VPSSIM để vào xóa thôi.

        1. Việt Phương Moderator

          Nếu bạn xóa lâu rồi thế thì khả năng không xóa toàn bộ rồi. Bạn kiểm tra trong /etc/nginx/conf.d có tồn tại Nginx Conf của phongthuynguyenkhang.com không. Có thì xóa đi
          ls -al /etc/nginx/conf.d/

  3. Huy Trần 1 comment

    service php-fpm restart
    Redirecting to /bin/systemctl restart php-fpm.service
    Job for php-fpm.service failed because the control process exited with error code. See “systemctl status php-fpm.service” and “journalctl -xe” for details.

    Web của e bị 502 bad mà e sửa mãi không được, a Phương cứu e với :(( toàn website tâm huyết nằm ở trển huhu

      1. Phạm Thạnh 7 comment

        Dùng lệnh xong của em bị như này a ơi 🙁 cứu em với:

        [root@tokyo_centos6_2g home]# systemctl status php-fpm
        ● php-fpm.service – The PHP FastCGI Process Manager
        Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
        Active: failed (Result: exit-code) since Sun 2019-04-21 22:33:57 +07; 3min 42s ago
        Process: 1704 ExecStart=/usr/sbin/php-fpm –nodaemonize (code=exited, status=78)
        Main PID: 1704 (code=exited, status=78)

        Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Starting The PHP FastCGI Process Manager…
        Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: failed to open e…(2)
        Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: failed to post p…ion
        Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: FPM initializati…led
        Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: php-fpm.service: main process exited, code=exited…n/a
        Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Failed to start The PHP FastCGI Process Manager.
        Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Unit php-fpm.service entered failed state.
        Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: php-fpm.service failed.
        Hint: Some lines were ellipsized, use -l to show in full.

        1. Việt Phương Moderator

          Không start được php-fpm rồi. Check
          systemctl status php-fpm -l
          systemctl start php-fpm

          Và bạn kiểm tra log PHP-FPM error để ra vấn đề hơn nhé

          1. Phạm Thạnh 7 comment

            Check 2 lệnh trên thì ra như này ạ: (Check log của php-fpm thì em không biết check ở đâu ạ?)


            # systemctl status php-fpm -l
            ● php-fpm.service - The PHP FastCGI Process Manager
            Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
            Active: failed (Result: exit-code) since Sun 2019-04-21 22:33:57 +07; 18h ago
            Process: 1704 ExecStart=/usr/sbin/php-fpm --nodaemonize (code=exited, status=78)
            Main PID: 1704 (code=exited, status=78)

            Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Starting The PHP FastCGI Process Manager...
            Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: failed to open error_log (/home/sangodosan.com/logs/php-fpm.log): No such file or directory (2)
            Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: failed to post process the configuration
            Apr 21 22:33:57 tokyo_centos6_2g php-fpm[1704]: [21-Apr-2019 22:33:57] ERROR: FPM initialization failed
            Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: php-fpm.service: main process exited, code=exited, status=78/n/a
            Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Failed to start The PHP FastCGI Process Manager.
            Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: Unit php-fpm.service entered failed state.
            Apr 21 22:33:57 tokyo_centos6_2g systemd[1]: php-fpm.service failed.
            Apr 21 23:05:58 tokyo_centos6_2g systemd[1]: Unit php-fpm.service cannot be reloaded because it is inactive.
            Apr 21 23:07:37 tokyo_centos6_2g systemd[1]: Unit php-fpm.service cannot be reloaded because it is inactive.
            [root@tokyo_centos6_2g home]# systemctl start php-fpm
            Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details.

          2. Việt Phương Moderator

            Chạy các lệnh sau để khởi động PHP-FPM nhé
            touch /home/sangodosan.com/logs/php-fpm.log
            chown nginx:nginx /home/sangodosan.com/logs/php-fpm.log
            systemctl restart php-fpm

            Xong kiểm tra lại
            systemctl status php-fpm -l

          3. Phạm Thạnh 7 comment

            Em tạo xong các file logs như a bảo sau đó khởi động lại, khi vào web báo lỗi “Error establishing a database connection”

            Bây giờ e phải làm gì tiếp theo ạ?

            (Trước đây e có cài backup online theo cách hocvps dạy, trong trường hợp xử lý ko dc thì e có thể dùng các bản backup đó để back lại thời gian trước khi lỗi không ạ?)

            Em cảm ơn!

          4. Việt Phương Moderator

            1. Check mysql
            service mysql status
            service mysql start
            2. Được

  4. Nguyễn Duy Khánh 32 comment

    A ơi e hỏi chút, lúc trước e có sửa file này và thêm vào đoạn mã
    add_header X-Frame-Options SAMEORIGIN;.
    Sau đó nó báo lỗi

    Redirecting to /bin/systemctl restart nginx.service
    Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details.

    Giờ e xóa mã đó đi rồi những vẫn lỗi ngày (khi reset nginx)
    A chỉ e cách khắc phục với a ơi?

      1. Nguyễn Duy Khánh 32 comment

        Nó báo lỗi này a ơi nginx: [emerg] invalid number of arguments in “rewrite” directive in /etc/nginx/conf.d/: demo.khanh.org.conf:5
        nginx: configuration file /etc/nginx/nginx.conf test failed

        Hôm qua e có thêm domain demo.khanh.org nhưng e chưa cài ssl cho nó
        *———————-
        Lệnh 2 thì ra cái này

        ● nginx.service – nginx – high performance web server
        Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
        Active: failed (Result: exit-code) since Thu 2018-10-04 16:49:37 +07; 1h 50min ago
        Docs: http://nginx.org/en/docs/
        Process: 1776 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

        Oct 04 16:49:37 khanh.org systemd[1]: Starting nginx – high performance web server…
        Oct 04 16:49:37 khanh.org nginx[1776]: nginx: [emerg] invalid number of arguments in “rewrite” directive in /etc/nginx/conf.d/: demo.khanh.org.conf:5
        Oct 04 16:49:37 khanh.org systemd[1]: nginx.service: control process exited, code=exited status=1
        Oct 04 16:49:37 khanh.org systemd[1]: Failed to start nginx – high performance web server.
        Oct 04 16:49:37 khanh.org systemd[1]: Unit nginx.service entered failed state.
        Oct 04 16:49:37 khanh.org systemd[1]: nginx.service failed.

      2. Nguyễn Duy Khánh 32 comment

        E gõ # ls -l /etc/nginx/conf.d thì ra
        -rw-r–r– 1 root root 0 Sep 26 22:31 default.conf
        -rw-r–r– 1 root root 1914 Oct 3 17:23 : demo.khanh.org.conf
        -rw-r–r– 1 root root 3492 Sep 29 21:37 detoxtainha.com.conf
        -rw-r–r– 1 root root 3587 Oct 3 02:17 email.khanh.org.conf
        -rw-r–r– 1 root root 2928 Sep 30 02:19 itea.com.vn.conf
        -rw-r–r– 1 root root 4759 Oct 3 01:48 khanh.org.conf
        -rw-r–r– 1 root root 3556 Sep 29 21:37 kinhdoanhquanao.com.conf
        -rw-r–r– 1 root root 3459 Oct 2 03:15 mayphache.net.conf
        -rw-r–r– 1 root root 3412 Sep 29 21:38 sendy.blog.conf

        e xóa ssl bằng lệnh
        /opt/letsencrypt/certbot-auto delete

        Thì chỉ ra 1 danh sách là

        1: mayphache.net
        2: detoxtainha.com
        3: itea.com.vn
        4: sendy.blog
        5: khanh.org
        6: email.khanh.org
        7: kinhdoanhquanao.com

        không thấy thằng demo.khanh.org.
        hơn nữa khi thêm domain e gõ sai nên lúc xóa cũng gặp rắc rối

        1. Việt Phương Moderator

          [emerg] invalid number of arguments in “rewrite” directive in /etc/nginx/conf.d/: demo.khanh.org.conf:5
          1. Nó báo lỗi đó. Dòng 5 sai đoạn rewrite. Bạn kiểm tra lại nhé. Với cả từ đầu đến cuối liên quan gì đến SSL ở đây đâu nhỉ? Bạn cứ kiểm tra cấu hình Nginx của domain đi đã
          2. Bạn thêm domain gõ sai xong bạn xóa thủ công hay xóa bằng lệnh hocvps? Và đó là domain nào

          1. Nguyễn Duy Khánh 32 comment

            do lúc gõ domain e gõ thêm dấu cách, E có kiểm tra mãi ko được nên e xóa VPS đi cài lại rồi a ơi. Cám ơn a

    1. Phạm Thạnh 7 comment

      Chạy lệnh đầu ra lỗi này:
      # touch /home/sangodosan.com/logs/php-fpm.log
      touch: cannot touch ‘/home/sangodosan.com/logs/php-fpm.log’: No such file or directory

      sangodosan.com chính là website chính lúc e vài vps nhưng giờ e xóa đi rồi, liệu có phải là do nó?

  5. Thang 22 comment

    [root@hitechk home]# systemctl status nginx.service
    ● nginx.service – nginx – high performance web server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Tue 2018-09-25 01:00:25 +07; 16s ago
    Docs: http://nginx.org/en/docs/
    Process: 1410 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

    Sep 25 01:00:25 hitechk systemd[1]: Starting nginx – high performance web server…
    Sep 25 01:00:25 hitechk nginx[1410]: nginx: [emerg] “set” directive is not allowed here in /etc/nginx/conf.d/bahra…conf:8
    Sep 25 01:00:25 hitechk systemd[1]: nginx.service: control process exited, code=exited status=1
    Sep 25 01:00:25 hitechk systemd[1]: Failed to start nginx – high performance web server.
    Sep 25 01:00:25 hitechk systemd[1]: Unit nginx.service entered failed state.
    Sep 25 01:00:25 hitechk systemd[1]: nginx.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.

    cho hỏi mình bị lỗi gì vậy ah, sau khi restart vps thì ko vào dc website kiểm tra nginx thì như vậy a? tks

    1. Việt Phương Moderator

      nginx: [emerg] “set” directive is not allowed here in /etc/nginx/conf.d/bahra…conf:8
      Dòng 8 của Nginx Conf site bahra… có vấn đề. Bạn kiểm tra lại nhé

      1. Thang 22 comment

        cảm ơn bạn mình chuyển sang vps mới rùi ^^, nhưng lần này mình củng reboot lại vps thì gặp lỗi này: sau khi mình chuyển qua vps mới thì vào website bình thường, nhưng khi reboot lại thì vào website nó lại hiện ra tendomain/wp-admin/install.php bắt cài lại worpress là sao nhỉ, mong bạn giải đáp sớm, mình có dùng wp super cache có ảnh hưởng gì ko ta?

        1. Việt Phương Moderator

          Bạn đã import database và sửa wp-config.php vào đúng database đó chưa

      2. Thang 22 comment

        mình chuyển vps khác bằng cách , copy hết file trong //public_html trên vps cũ ra máy sau đó chuyển lên //public_html trên vps mới, các thông số trong wp-config.php thì mình sửa rồi, mình tạo giống như cũ luôn mà, nhưng sao lúc đầu mình đã vào dc website rồi mà reboot lại bị như th6e1 nhỉ, cách mình làm vậy có đúng ko? tks

        1. Việt Phương Moderator

          Lúc đầu thì có thể do cache trình duyệt của bạn nữa. Nên mình mới bảo bạn kiểm tra lại database và cấu hình trong wp-config

      3. Thang 22 comment

        kiểm tra database( trong phpmyadmin/) mình thấy trống trơn à, vậy cách mình làm chuyển sang vps khác như trên là sai hả AD, chỉ mình cách chuyển đúng với , có cần export dattabase ko?nếu ko vào dc phpadmin thì có dùng lệnh để xuất ra như thê 1 nào, mong ad chỉ mình cách chuyển web trên vps an toàn từng bước với( làm thủ công cho dễ hiểu) , hoặc có bài viết nào cho mình link với cảm ơn AD rất nhiều

  6. do son 4 comment

    Chào admin,
    Hôm nay, site của mình tự nhiên bị lỗi 502 (mình cũng dùng hocvps script để cài đặt wordpress). Website vẫn chạy bình thường, lỗi 502 chỉ xuất hiện khi post hoặc edit một bài viết nào đó. Khi bấm “publish” bài viết vẫn được post nhưng hiện lỗi 502.

    Dưới đây là file /var/log/nginx/error.log

    https://pastebin.com/ZeGKgn4c

    Admin giúp mình xem bị lỗi gì vậy. Mình check thì RAM và CPU vẫn thừa rất nhiều.
    Cảm ơn!

  7. Arthur 2 comment

    Site của mình tự dưng không không lại bị lỗi này, sửa theo cách trên thì đã vào OK. Không biết HocVPS/Luân có biết vì sao nó lại nảy sinh ra cái lỗi này không? (do bị DDOS, do đầy bộ nhớ…. hay vì sao?) Để sau này lỡ có gặp còn biết nguyên nhân 😀

    Anw, cảm ơn Luân và HocVPS.

    1. Arthur 2 comment

      Hic, sau khi dùng cách của HocVPS thì đã xử được lỗi 502, nhưng bỗng dưng mấy site nằm trên cùng vps đều không đăng nhập vào wp admin được. Đăng nhập sai thì báo lỗi, còn đăng nhập đúng thì ko login được.
      Không biết có ai bị vậy hoặc biết cách khắc phục không giúp mình với.

      Cảm ơn mọi người.

  8. MinhTT 1 comment

    Chào a. E có vấn đề với php trên nginx là khi file php xử lý quá lâu sẽ bị lỗi 504 Gateway Time-out. E đã thêm ini_set(‘max_execution_time’, 5000); vào đầu function nhưng không đc. Có cách nào chỉ cần sửa ở function mà không cần sửa ở file php.ini không a. Vì e không muốn thay đổi timeout ở tất cả các function. E chỉ muốn thay đổi ở những function được chỉ định thôi ạ

    E cảm ơn

  9. Huy Đức 1 comment

    Khi dùng import theme demo thì 502 Bad Gateway nginx

    2018/06/12 21:17:43 [error] 7020#7020: *9524 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 58.187.168.222, server: store.bloghuongnoi.com, request: “GET /wp-admin/admin-ajax.php?action=mts_install_demo&demo_import_id=demo-2&nonce=0bbb5b951e&demo_import_options=1&demo_import_content=1&demo_import_widgets=1 HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “store.bloghuongnoi.com”, referrer: “http://store.bloghuongnoi.com/wp-admin/themes.php?page=theme_options&tab=import_export_default”

    Có tra google nhưng không ra kết quả về lỗi 104, chắc do lỗi request không đủ RAM, bộ nhớ. Sau đó tra cấu hình :

    total used free shared buff/cache available
    Mem: 992 321 221 178 449 318
    Swap: 0 0 0

    Có ai biết lỗi gì không nhỉ ?

    1. Việt Phương Moderator

      Bạn import bằng lệnh SSH nhé. File dung lượng lớn import qua PHPMyAdmin không ổn

    1. Việt Phương Moderator

      Lỗi bạn bắt đầu từ vấn đề này mmap(MAP_ANON|MAP_SHARED, 52428800) failed (12: Cannot allocate memory)
      VPS bạn là OpenVZ, nhà cung cấp đã giới hạn shmpages ở mức 131072 và không đủ cho Nginx tiếp tục cache
      Giải pháp là bạn yêu cầu nhà cung cấp nâng/bỏ giới hạn đi. Thường VPS OpenVZ hay bị giới hạn nhiều thứ dù đi kèm là mức giá rẻ hơn các VPS sử dụng công nghệ ảo hóa khác. Nhưng có vẻ giải pháp khả quan hơn là nâng cấp cấu hình VPS.
      Hiện tại bạn không thể khởi động lại Nginx đúng không

  10. Manh 6 comment

    Cho mình hỏi bugs này là gì? Cách xử lý như thế nao vậy ad

    # systemctl status nginx.service
    ● nginx.service – nginx – high performance web server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2018-01-23 09:28:58 +07; 1min 7s ago
    Docs: http://nginx.org/en/docs/
    Process: 857 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
    Process: 888 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
    Process: 887 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
    Main PID: 889 (nginx)
    CGroup: /system.slice/nginx.service
    ├─889 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    └─890 nginx: worker process

    Jan 23 09:04:58 cloudservers51d242.localdomain systemd[1]: nginx.service failed.
    Jan 23 09:23:56 cloudservers51d242.localdomain systemd[1]: Starting nginx – high performance web server…
    Jan 23 09:23:56 cloudservers51d242.localdomain nginx[995]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    Jan 23 09:23:56 cloudservers51d242.localdomain nginx[995]: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 52428800) failed (12: Cannot allocate memory)
    Jan 23 09:23:56 cloudservers51d242.localdomain nginx[995]: nginx: configuration file /etc/nginx/nginx.conf test failed
    Jan 23 09:23:56 cloudservers51d242.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1
    Jan 23 09:23:56 cloudservers51d242.localdomain systemd[1]: Failed to start nginx – high performance web server.
    Jan 23 09:23:56 cloudservers51d242.localdomain systemd[1]: Unit nginx.service entered failed state.
    Jan 23 09:23:56 cloudservers51d242.localdomain systemd[1]: nginx.service failed.
    Jan 23 07:54:29 cloudservers51d242.localdomain systemd[1]: Failed to fork: Cannot allocate memory

    1. Việt Phương Moderator

      Không đủ memory bạn nhé. free -m của bạn ra kết quả gì
      echo $((`cat /proc/sys/kernel/shmmax` / 1024 / 1024))Mb nữa

      1. Manh 6 comment

        Kết quả đây bạn. Bạn cho mình hỏi cách xử lý như thế nào vậy? Cám ơn bạn
        free -m
        total used free shared buff/cache available
        Mem: 512 117 260 0 134 210
        Swap: 256 0 256

          1. Việt Phương Moderator

            Có thể nhà cung cấp VPS bạn đã giới hạn System Shared Memory. Cho mình kết quả
            # cat /proc/user_beancounters
            # curl -sL https://raw.githubusercontent.com/centminmod/mmap_test/master/mmap_test.sh | bash
            # yum install virt-what && virt-what
            # cat /proc/user_beancounters

            Paste qua pastebin.com cho gọn nhé