Archive for nginx

Nginx ошибка «413 Request Entity Too Large»

// Ноябрь 4th, 2016 // No Comments » // nginx

Ошибка HTTP 413 — Request Entity Too Large Error означает, что клиент отправил слишком большой запрос на сервер. Причина настройки nginx по умолчанию, параметр client_max_body_size равен 1m, его и нужно изменить под свои потребности.

Директива client_max_body_size задаёт максимально допустимый размер тела запроса клиента, указываемый в строке «Content-Length» в заголовке запроса. Если размер больше заданного, то клиенту возвращается ошибка «Request Entity Too Large» (413). Следует иметь в виду, что браузеры не умеют корректно показывать эту ошибку.

Подробнее

Есть два варианта установки этой переменной глобально для всего сервера, тогда нужно вписать в секцию http или для определенного виртуального хоста, тогда вписать в секцию server. Стоит разумно относится к установке размера данной директивы, т.к. слишком большой размер является потенциальной уязвимостью для возможной атаки на ваш сервер, обычно достаточный размер от 5 до 32m.
В файле nginx.conf, в нужную секцию http/server, добавить/изменить директиву:

http {
 ...
 client_max_body_size 32m;
 ...
}

Nginx ошибка accept() failed (24: Too many open files) while accepting new connection

// Март 25th, 2013 // No Comments » // linux, Network, nginx

На одном небольшом WEB-проекте, который медленно, но уверенно растет, появились такие ошибки в логах:

2013/03/24 16:22:03 [alert] 2636#0: accept() failed (24: Too many open files) while accepting new connection on 0.0.0.0:80
2013/03/24 16:22:03 [alert] 2636#0: accept() failed (24: Too many open files) while accepting new connection on 0.0.0.0:80

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

Проверить текущие ограничения

будучи root-ом представится пользователем, от имени которого работает nginx, в Debian подобных дистрибутивах это www-data, а в Red Hat подобных — nginx:

su - www-data

и проверить жесткие и мягкие ограничения:

ulimit -Hn
ulimit -Sn

Скорее всего ответ будет «1024».

Увеличение лимита файловых дескрипторов на уровне ОС

Отредактировать/добавить в файл /etc/sysctl.conf строку:

fs.file-max = 70000

В файл /etc/security/limits.conf добавить лимит для конкретного пользователя:

www-data       soft    nofile   10000
www-data       hard    nofile   30000

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

sysctl -p

Настройка лимита файловых дескрипторов в конфигурации nginx

Nginx имеет директиву, которая позволяет установить этот лимит на уровне процесса (лимит распространяется на каждого воркера в отдельности), находится в файле /etc/nginx/nginx.conf:

worker_rlimit_nofile 30000;

затем перезагрузить nginx.

nginx хост по умолчанию / nginx default host

// Январь 14th, 2013 // No Comments » // nginx, WWW

При конфигурации nginx с несколькоми виртуальными хостами/сайтами сайт по умолчанию явно не указан.
Для определения исправим конфиг, например /etc/nginx/sites-available/default, найдем строку:

server {
    listen   80; ## listen for ipv4

и заменим на:

server {
    listen   80 default; ## listen for ipv4

Теперь все обращения к вебсерверу с несуществующим адресом или напрямую по IP будут попадать на страницу указанную в default.