Klijent ti javlja "ne radi mi sajt", otvoriš ga i umjesto stranice dočeka te "502 Bad Gateway" ili "504 Gateway Timeout". Oba su gateway error-i ali znače različite stvari i imaju različite uzroke. Ovaj post objašnjava razliku, kako brzo odgovoriti, i koje su tipične zamke za hosting setupove u 2026.
502 vs 504 — bitna razlika
Oba su statusni kodovi koje vraća reverse proxy ili gateway (Nginx, LiteSpeed, Cloudflare, Apache mod_proxy) kada ne može pravilno komunicirati sa upstream serverom (PHP-FPM, Node.js process, Python WSGI, itd.).
502 Bad Gateway: reverse proxy je dobio nevaljani odgovor od upstream-a. Upstream je odgovorio nešto neobično (možda crashed mid-request, vratio prazan response, ili koruptirani payload).
504 Gateway Timeout: reverse proxy je predugo čekao odgovor od upstream-a i odustao. Upstream nije pao, samo nije odgovorio na vrijeme (tipično 30-60 sekundi).
Praktičan razlikovac:
- 502 = upstream postoji ali komunikacija je puknula → tipično PHP-FPM crashed, Node.js process exit, ili connection reset
- 504 = upstream postoji, radi, ali predugo trajalo → tipično slow query, beskonačna petlja, ili externe API call koji ne odgovara
Brzi check u 90 sekundi
- Refresh stranicu — ako je 502/504 transient (PHP-FPM se vratio, query završio), drugi pokušaj radi
- Provjeri drugi sajt na istom hostingu — server-wide vs sajt-specifični problem
- Provjeri da li je u console-u stvarni 502/504 — Dev Tools → Network tab → vidi status code
- Pogledaj koji server je vratio error — Nginx, LiteSpeed, Cloudflare imaju različite default 502/504 stranice
- Otvori cPanel — ako se cPanel logiraš normalno, server je živ
502 Bad Gateway — 5 najčešćih uzroka
1. PHP-FPM proces pao
Najčešći uzrok. PHP-FPM pool je crashed pod opterećenjem, OOM (out of memory), ili je neki specifičan request izazvao segfault. Nginx ili LiteSpeed dobiva connection refused od PHP-FPM-a i vraća 502.
Fix: u cPanel-u → Select PHP Version → Reset PHP. Ili kontaktiraj support za PHP-FPM restart. Na WMD upravljanim paketima — automatski monitoring vidi PHP-FPM crash i restartuje u par sekundi.
2. Memory exhaustion u PHP scriptu
PHP script je tražio više memorije nego ima dopušteno (memory_limit). Sam script padne, PHP-FPM vrati garbage, gateway vrati 502.
Provjera: error_log → traži "Allowed memory size of X bytes exhausted".
Fix: povećaj memory_limit u php.ini ili .user.ini. Standardni minimum za WP je 256M, za WooCommerce 512M. Ako problem perzistira na 512M — to nije problem hostinga, to je problem koda.
3. Cloudflare ne može doseći origin
Cloudflare proxy → origin server. Ako origin ne odgovara, Cloudflare vraća 502 sa svojim brandiranim error stranicom.
Provjera: Cloudflare 502 stranica izgleda drugačije od Nginx/LiteSpeed default-a.
Fix:
- U Cloudflare → Analytics → 5xx errors. Vidi se source.
- Privremeno pause Cloudflare → otvori sajt direktno. Ako sad radi — origin je OK, Cloudflare-origin komunikacija je problem.
- Provjeri da li origin firewall blokira Cloudflare IP-eve.
4. Node.js / Python process pao
Za sajtove koji koriste Node.js (Next.js, NestJS, Express) ili Python (Django, Flask) — process je exit-ao ili pao. Nginx reverse proxy ne može doseći upstream.
Fix: u cPanel-u → Node.js Selector ili Python Selector → Restart App. Provjeri error log za stack trace.
5. Reverse proxy konfiguracija razbijena
Tipično nakon promjene u Nginx ili LiteSpeed config-u. Reverse proxy ne zna kuda routirati request → 502.
Fix: kontaktiraj support, ovo je server-level config. Ne diraj sam ako nisi siguran.
504 Gateway Timeout — 5 najčešćih uzroka
1. Spori SQL query
Najčešći uzrok 504. Neki query (ili joined query) traje 30+ sekundi i request timeout-a prije nego završi.
Provjera: uključi slow_query_log u MariaDB s threshold 5 sekundi. Identificiraj koji query.
Fix:
- Dodaj index na frequently filtered/sorted columns
- Optimiziraj WP wp_options table — autoload bloat je veliki uzrok na starijim sajtovima
- Ako je query u plugin-u → kontaktiraj plugin developera ili zamijeni plugin
2. Externe API call koji ne odgovara
Sajt poziva externe API (npr. fiskalna integracija, Stripe API, social media feed). External servis je spor ili down, tvoj PHP script čeka, gateway timeout-a.
Fix:
- Postavi cURL timeout u kodu na razumnu vrijednost (5-10 sekundi)
- Premjesti API call u background queue (WP-Cron, RoadRunner) umjesto sync u request flow-u
- Cache externe API response na 5-60 minuta gdje je moguće
3. Beskonačna petlja u kodu
Plugin ili custom kod ima rekurziju ili petlju koja ne završava. PHP nastavlja izvršavati dok ne udari max_execution_time, gateway timeout-a prije toga.
Fix: isključi pluginove jedan po jedan (preimenuj plugins folder preko FTP). Ako sajt radi bez pluginova, vraćaj jedan po jedan dok ne pronađeš krivca.
4. PHP max_execution_time prenizak
Default je često 30 sekundi. Za WP import, large backup operations, ili izradu PDF-a — to nije dovoljno.
Fix: povećaj max_execution_time u php.ini ili .user.ini na 120 ili 300 sekundi za admin operacije. Ali ovo treba biti exception, ne pravilo — sajt koji rutinski treba 5 minuta po request-u ima dublji problem.
5. Cloudflare timeout
Cloudflare ima vlastiti 100-sekundni timeout na origin response. Ako tvoj sajt treba 110 sekundi za neku admin operaciju — Cloudflare vrati 504 iako bi sajt zapravo završio.
Fix: za admin operacije, isključi Cloudflare proxy za specifične path-ove (npr. /wp-admin/*) ili koristi Cloudflare Workers timeout postavke.
Prevencija 502 i 504
- Server-side page caching (AccelerateWP, LiteSpeed Cache) — manje requesta dosegne PHP, manje šansi za PHP-FPM crash
- Adekvatan PHP memory_limit (256M-512M za WP, 1G za Magento)
- Optimiziran wp_options table — clear stale autoload entries jednom mjesečno
- External API calls u background queue, ne u request flow
- MariaDB query optimization — slow_query_log + indexes
- Monitoring PHP-FPM — alerting kad pool crashed
- Health checks — uptime monitor svake 5 minuta
WMD pristup 502/504
- Auto-restart PHP-FPM u sekundama ako padne
- Max Web Server (Nginx-based) sa optimiziranim timeout postavkama
- MariaDB tuning — innodb_buffer_pool prilagođen veličini baze
- Slow query monitoring — vidimo problematične query-je prije nego pretvore u 504
- AccelerateWP — server-side WP cache smanji opterećenje 90%
- 24/7/365 support — ako 502/504 perzistira, dobivaš tehničara unutar 15 minuta
Kad zvati support
Probao si refresh, restart PHP-a, isključio pluginove, a 502/504 perzistira? Pošalji:
- Domenu i točan URL koji daje error
- Vrijeme početka (timestamp)
- Screenshot error stranice (kaže nam tko ju je servirao)
- Što si zadnje napravio prije problema (deploy? plugin update? config change?)
- Ako imaš pristup error_log-u, pošalji zadnjih 50 linija
Na WMD upravljanim paketima — provjeravamo PHP-FPM, MariaDB, error log, slow query log. Tipično dijagnoza u 15 minuta, fix u 30. Ako problem dolazi iz plugin koda — i to riješavamo (whitelisting, custom config) ili pomažemo s migracijom plugina.