Ошибки 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 откатывает сервер к старой конфигурации.