NGINX errors and how to fix them

Troubleshooting common NGINX errors: 502, 504, 413.

When running a website on NGINX, you may occasionally encounter errors that prevent the site from working properly. This guide covers the most common ones — 502 Bad Gateway, 504 Gateway Time-out, and 413 Request Entity Too Large — and shows step-by-step how to fix them on VPS or dedicated servers.

502 Bad Gateway

What it means: NGINX cannot get a response from the backend (PHP-FPM, Apache, Node.js, uWSGI, etc.).

Most common causes:

  • Backend service is stopped or crashed
  • Wrong socket path or port in config
  • Incorrect permissions on the socket
  • Not enough memory or worker processes in PHP-FPM

How to fix:

  1. Check the status of PHP-FPM (or your backend):
sudo systemctl status php-fpm
# or for specific version
sudo systemctl status php8.1-fpm
  1. Restart the service:
sudo systemctl restart php-fpm
# or php8.1-fpm
  1. Verify the socket path in NGINX and PHP-FPM configs:

    • NGINX: fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    • PHP-FPM (/etc/php/8.1/fpm/pool.d/www.conf): listen = /run/php/php8.1-fpm.sock
  2. Fix permissions if needed:

sudo chown www-data:www-data /run/php/php8.1-fpm.sock
sudo chmod 660 /run/php/php8.1-fpm.sock
  1. Test and reload NGINX:
sudo nginx -t && sudo systemctl reload nginx

504 Gateway Time-out

What it means: NGINX waited too long for a response from the backend and timed out.
Most common causes:

  • Slow PHP script execution
  • Slow database queries
  • High server load

How to fix:

  1. Increase timeouts in your site config (in server or location block):
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
fastcgi_read_timeout 300s;  # for PHP
  1. Optimize PHP-FPM (in /etc/php/8.1/fpm/pool.d/www.conf):
pm.max_children = 50          # increase as needed
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
request_terminate_timeout = 300
  1. Restart services:
sudo systemctl restart php-fpm
sudo systemctl reload nginx
  1. If the issue is with a specific script — optimize DB queries or add caching for heavy pages.

Our products and services

Web HostingReliable hosting services for websites of any scale.
Order
VPSFlexible cloud infrastructure with full root access.
Order
Dedicated ServersBare metal servers for maximum performance.
Order

413 Request Entity Too Large

What it means: Client is trying to upload a file larger than NGINX's allowed limit (default 1 MB).
Common causes: Uploading large files (photos, videos, backups, archives).

How to fix:

  1. Increase the limit in your site config (or in /etc/nginx/nginx.conf in http block):
client_max_body_size 64M;  # or 128M, 512M, 1G, etc.
  1. Reload NGINX:
sudo nginx -t && sudo systemctl reload nginx
  1. Also increase PHP limits in php.ini (/etc/php/8.1/fpm/php.ini):
upload_max_filesize = 64M
post_max_size = 64M

Restart PHP-FPM:

sudo systemctl restart php-fpm

How to reload NGINX properly

  • Always check config first:
sudo nginx -t
  • Graceful reload (no downtime):
sudo systemctl reload nginx

or

sudo nginx -s reload
  • Full restart (only if reload doesn't help):
sudo systemctl restart nginx

Useful notes

  • Always back up configs before changes: sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  • After changes, check logs: /var/log/nginx/error.log and /var/log/nginx/access.log

Help

If you have any questions or need assistance, please contact us through the ticket system — we're always here to help!

Need help?Our engineers will help you free of charge with any question in minutesContact us