RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

User Tools

Site Tools


Sidebar


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:nginx:nginx_error

nginx: коллекция ошибок

fastcgi_intercept_errors

nginx: [warn] 4096 worker_connections exceed open file resource limit: 1024

OKGOOGLE. Проверим текущие soft/hard лимиты файловых дескрипторов и открытых файлов для master процесса nginx

# cat /proc/$(cat /var/run/nginx.pid)/limits|grep open.files
Max open files            1024                4096                files   

Далее (подсмотрел на stackoverflow кажется) проверим для дочерних процессов (worker)

# ps --ppid $(cat /var/run/nginx.pid) -o %p|sed '1d'|xargs -I{} cat /proc/{}/limits|grep open.files
Max open files            1024                4096                files     
Max open files            1024                4096                files     
Max open files            1024                4096                files     
Max open files            1024                4096                files  

Добавить в /etc/security/limits.conf 16384

nginx soft nofile 16384
nginx hard nofile 16384

В nginx.conf установить

  • worker_processes 4;
  • worker_connections 4096;
  • worker_rlimit_nofile 16384;
for pid in `pidof nginx`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done

upd FIXME

в centos7 /etc/systemd/system/nginx.service.d добавить conf

[Service] 
LimitNOFILE=16384

could not build the server_names_hash

server_names_hash_bucket_size

Ошибка

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

Просто сделай больше LOL

    http {

    ...snip...
    server_names_hash_bucket_size 64;
    ...snip...

    }

413 Request Entity Too Larget

Ошибка появляется при загрузке файлов больше 1 мегабайта. Одна из причин — это дефолтные настройки nginx, а точнее параметра client_max_body_size, который по умолчанию равен 1m

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

Подробнее в документацииclient_max_body_size

Решение
Изменить размер client_max_body_size

upstream sent too big header while reading response header from upstream, client

Что такое proxy_buffer_size и proxy_buffers.

Исправляется добавлением двух последних строк в конфиг Nginx:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

proxy_buffers 8 16k;
proxy_buffer_size 32k;

А если по-русски, то proxy_buffer_size предназначен для хранения, прочтенного с бэкэнда хидера:

proxy_buffer_size and fastgci_buffer_size set buffer to read the whole of
response header from backend or fastcgi server.

То есть, если Вы уже выставили 32к, а ошибка все равно появляется, то нужно тюнить дальше.
Если же просто увеличить 32к до 64к, то можно получить вот такую ошибку:

Restarting nginx: [emerg]: "proxy_busy_buffers_size" must be less than the size of all
"proxy_buffers" minus one buffer in /etc/nginx/nginx.conf:34017

Итого, если указанных в самом верху настроек мало, корректируем так:

proxy_buffers 8 32k;
proxy_buffer_size 64k;

И еще. fastcgi paramaters that appear to be currently working

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on

Ошибки 404/403 apache+nginx HTTP/1.0 HTTP/1.1

Небольшая заметка на тему косяка в апаче (это всё-таки он игнорирует то, что ему передали HTTP/1.0, и отдаёт с HTTP/1.1)

В качестве обхода проблемы (особенно если используется не Apache) по идее также должна помочь установка nginx >= 1.1.4 или chunked_transfer_encoding off.

http://habrahabr.ru/blogs/nginx/135662/

414 Request URI Too Large

nginx via https://ruhighload.com/post/414+Request+URI+Too+Large

large_client_header_buffers 4 16k

Здесь 16k байт и будет желаемым размером URL-адреса, а 4 — количеством желаемых буферов

Большой URL, в основном из-за плохого дизайна приложения.

FIXME apache

Увеличиваем размер для limit request line и limit request field size.

LimitRequestLine      102400
LimitRequestFieldSize 102400

504 SSL_do_handshake() failed

via http://dragonflybsd.blogspot.com/2012/04/nginx-504-ssldohandshake-failed.html

При проксировании https даже без сертификатов (чисто прокси) при реальной работе ловили

SSL_do_handshake() failed (SSL: error:1408C095:SSL routines:SSL3_GET_FINISHED:digest check failed) while SSL handshaking to upstream

и 502 Bad Gateway.

Как ни странно, гугл дал всего 4 страницы, из которой только 1 была с решением:

proxy_ssl_session_reuse off;

Помогло. Непонятно, что это было и почему… Проверять можно было через openssl s_client -connect www.test.com:81 -state -ssl3 -no_ssl2 -no_tls1 в несколько потоков.

Самое просто решение - почистить куки. Если же сервер наш, можно подкрутить настройки серверов:

для nginx это

large_client_header_buffers 4 8k;

Можно выставить например 16к, но дальше будет ошибка

Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

Потому что надо увеличить эти же значения и для apache

LimitRequestFieldSize 8190

Можно выставить

LimitRequestFieldSize 16380

via

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

server_names_hash_bucket_size 64;

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/nginx/nginx_error.txt · Last modified: 2020/04/03 15:07 by dx