Ошибки Nginx и их устранение

Разбор ошибок сервера и описание способов их устранения

При работе с веб-сервером Nginx иногда возникают ошибки, которые мешают корректной работе сайта. В этой статье мы разберём наиболее распространённые ошибки, такие как 502 Bad Gateway, 504 Gateway Time-out и 413 Request Entity Too Large, и покажем, как их устранять.


502 Bad Gateway

Ошибка означает, что NGINX не может получить ответ от одного из сервисов на сервере. Довольно часто она появляется, когда NGINX работает в связке с Apache, Memcached, а также обрабатывает запросы PHP-FPM. Как правило, проблема возникает из-за отключенного сервиса — в этом случае нужно проверить состояние “напарника” и при необходимости перезапустить его.

Для PHP-FPM также важно проверить права доступа к сокету. В файле /etc/php-fpm.d/www.conf должны быть прописаны правильные права:

listen = /tmp/php5-fpm.sock 
listen.group = www-data
listen.owner = www-data

504 Gateway Time-out

Эта ошибка появляется, когда NGINX долго не получает ответ от связанного сервиса. Обычно это происходит, если сервис отвечает слишком медленно.

Для устранения проблемы можно увеличить таймауты. В связке NGINX + Apache в конфигурационный файл добавьте:

server { 
... 
   send_timeout 800;
   proxy_send_timeout 800;
   proxy_connect_timeout 800;  
   proxy_read_timeout 800;  
... 
}

Если PHP обрабатывается слишком долго в PHP-FPM, также увеличиваем таймаут для FastCGI:

location ~ \.php$ { 
   include fastcgi_params;
   fastcgi_index index.php; 
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
   fastcgi_pass unix:/tmp/php5-fpm.sock;  
   fastcgi_read_timeout 800;
}

413 Request Entity Too Large

Эта ошибка возникает, если вы пытаетесь загрузить слишком большой файл. По умолчанию в NGINX установлено ограничение 1Mb.

Чтобы увеличить лимит, в nginx.conf найдите строку:

client_max_body_size 1m;

и замените на нужное значение, например:

client_max_body_size 30m;

Также можно полностью отключить проверку тела запроса значением 0:

client_max_body_size 0;

Примечание

При работе с VPSS или выделенным сервером вы получаете полный контроль над сервисами. Это упрощает проверку их состояния, внесение изменений в конфигурацию и оперативное устранение возникающих проблем.

После внесения изменений обязательно перезагружайте NGINX.


Как перезагрузить NGINX

Для перезагрузки NGINX используйте restart или reload:

service nginx reload

или

/etc/init.d/nginx reload

или

nginx -s reload

Чтобы перезагрузить только конфигурацию без полной остановки сервера:

nginx -s reload

Проверить правильность конфигурации можно командой:

nginx -t

В чём разница между reload и restart

Reload — плавно применяет новую конфигурацию: новые процессы запускаются с новой конфигурацией, старые закрываются постепенно. Restart — резко останавливает и запускает сервер заново. Если конфигурация содержит ошибки, restart может привести к остановке сервера, а reload откатывает сервер к старой конфигурации.

Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам