
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.
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.
Xem thêm:
Chúc bạn thành công.
Cho mình hỏi lỗi này là gì ad? Chỉ giúp mình cách fixed với. Thanks 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
Có thể là VPS thiếu RAM. Mình cũng không rõ về lỗi này.
Bác ơi, bác có thể fix lỗi này trên server em được không.
Em xài vpssim rất ngon, không bị lỗi gì. Nhưng riêng con server của em cần panel nên em mua ispmanager. Xài gần 1 năm rồi. nhưng dạo này nó hay bị bad gateway.
Nhờ bên Nga nó hỗ trợ mà nó dò không ra (hay chưa dò thì không biết)
Bác làm giúp em với, em gửi tiền công, vì em có nhiều khách trên server, bị lỗi này khách phàn nàn quá.
Cảm ơn bác
Hiện tại mình không giúp bạn config lại VPS được rồi.
Mình không có thời gian.
Thông thường VPS đang họat động ổn định mà có lỗi này thì khả năng thiếu RAM hoặc CPU thiếu (nên xử lý chậm, làm nghẽn dồn các tiến trình lại gây thiếu RAM) nên PHP die tạm thời.
Khi die tạm thời thì lỗi 502 xuất hiện.
Bạn có thể config giảm timeout cho PHP, sau 1 thời gian hoàn tất tiến trình => out để dành CPU và RAM cho tiến trình khác.
Cảm ơn bác.
Ram và cpu lúc nào cũng dư.
32 CPU Dedicated, 40g ram xài có 20GB
Để em tìm hiểu vụ time out php để giảm lại
Cấu hình như vậy chắc không thiếu CPU và RAM rồi :)
Xem log php để tìm nguyên nhân rồi khắc phục.
Bác cho em hỏi là VPS của em chạy mấy website sau bị đầy dung lượng nên server bị dis không truy cập đc website. Em sử dụng Vultr nên em đã vào nâng cấp lên SET lơn hơn. Nhưng khi khởi động lại thì bị báo sofia.vn ( 502.._) . Em vào restart php-fpm thì không được. Em sử dụng VPSSIM ạ

:( Giúp em với ạ :((
Em vào chức năng Quản Lý Log File xem nguyên nhân có phải do file LOG không ?
Thêm nữa, Em vào Tiện Ích & Addons ==> File Largest Files And Folders để kiểm tra các file dung lượng lớn nhất.
Dạo này mình rất hay bị lỗi này mặc dù VPS đã nâng lên gần gấp đôi cấu hình (RAM, CPU) so với trước.
Mình không rõ nguyên nhân tại sao nữa. Mình sử dung PHP 5.5, Bật cả Memcached và Opcode. Chạy PHP 5.6 thì còn hay bị hơn. Bạn nào gặp rồi chỉ mình với.
Mình xin cảm ơn !
Bạn thử tăng timeout của nginx trong vhost lên sau đó khởi động lại nginx xem sao?
của mình bị như thế à sửa các kiểu không được :((. Sửa xong f5 thì chay duoc f5 cái nữa lại bị không hiểu nó bị sao nữa :(
Chắc bạn có sử dụng tham số limi_req, F5 gần nhau quá sẽ bị block :)
Chắc là cái này rồi, bác hd em cách chỉnh limi_req với
bạn dùng apache hả ?
Google một xíu là có mà :)
Có 3 options khi cài web.
Apache, cgi, nginx-fpm
Em nghĩ do em config lại bản mặc định sai chỗ nào đó. Mà chỉ config thằng nginx.conf thôi
Xin chào,
Sau khi mình tiến hành cập nhật WP thì tới bước click vào “Cập nhật cơ sở dữ liệu” thì website load một hồi thì hiện ra thông báo ” 502 bad gateway” .
Xin vui lòng hướng dẫn cách xử lý.
Cam on
Chào bạn!
Mình sd VPSSIM bản mới nhất, add vài site đầu vào update này nọ đều bình thường. Xong có 1 site vào update wordpress lên 4.2 xong báo update lại databases cứ log vào wp-admin lại báo lỗi 502 bad gateway, mình đã restart lại các kiểu, stop zen opcahe, clear opcode … vẫn không được bạn fix giúp mình nhé!
Bạn đã fix đuợc lỗi chưa nhỉ >?
Mình cài lại rồi cũng bị như vậy, Centos 6 và 7 cũng bị, cậu có email không mình gửi info cậu check giúp mình với, thanks