linux:nginx:nginx_error
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | |||
linux:nginx:nginx_error [2024/11/04 14:09] – dx | linux:nginx:nginx_error [2024/11/04 14:21] (текущий) – dx | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== nginx: коллекция ошибок ====== | ||
+ | ==== http2 deprecated ==== | ||
+ | |||
+ | Ошибка **nginx: [warn] the " | ||
+ | |||
+ | Заменить | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | На | ||
+ | |||
+ | <code bash> | ||
+ | listen 443 ssl; | ||
+ | http2 on; | ||
+ | </ | ||
+ | |||
+ | Заменить быстро везде | ||
+ | |||
+ | <code bash>sed -i ' | ||
+ | |||
+ | ==== could not allocate new session in ssl session shared cache le_nginx_ssl while ssl handshaking ==== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | //For now you may use smaller session timeouts and/or a larger shared memory zone. This way sessions will expire and will be removed from the cache before the cache will be overflowed, and no errors will happen.// | ||
+ | |||
+ | т.е. **ssl_session_cache** и **ssl_session_timeout** | ||
+ | |||
+ | <code bash> | ||
+ | ssl_session_cache | ||
+ | ssl_session_timeout 1800m; | ||
+ | </ | ||
+ | |||
+ | ==== Skipping acquire of configured file ' | ||
+ | |||
+ | **Ошибка** | ||
+ | |||
+ | < | ||
+ | Skipping acquire of configured file ' | ||
+ | </ | ||
+ | |||
+ | **Решение** | ||
+ | |||
+ | Заменить | ||
+ | |||
+ | < | ||
+ | deb http:// | ||
+ | deb-src http:// | ||
+ | </ | ||
+ | |||
+ | На | ||
+ | |||
+ | < | ||
+ | deb [arch=amd64] http:// | ||
+ | deb-src http:// | ||
+ | </ | ||
+ | |||
+ | ==== upstream timed out (110: Connection timed out) while reading response header from upstream ==== | ||
+ | |||
+ | для apache | ||
+ | < | ||
+ | proxy_connect_timeout 300; | ||
+ | proxy_send_timeout 300; | ||
+ | proxy_read_timeout 300; | ||
+ | </ | ||
+ | |||
+ | для fpm | ||
+ | |||
+ | < | ||
+ | fastcgi_connect_timeout 60; | ||
+ | fastcgi_send_timeout 180; | ||
+ | fastcgi_read_timeout 180; | ||
+ | </ | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ==== sock failed (11: Resource temporarily unavailable) while connecting to upstream ==== | ||
+ | |||
+ | Ошибка: | ||
+ | |||
+ | Браузер возвращает **502 Bad Gateway**. | ||
+ | |||
+ | nginx работает с php через сокеты. Проблема в дефолтных лимитах | ||
+ | |||
+ | * net.core.somaxconn = 128 (ограничение на количество открытых соединений к файловым сокетам) | ||
+ | * net.core.netdev_max_backlog = 200 (ограничение на количество ожидающих запросов открытия соединений к файловым сокетам) | ||
+ | |||
+ | Посмотреть текущие значения можно так | ||
+ | |||
+ | < | ||
+ | cat / | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Решение: | ||
+ | |||
+ | < | ||
+ | net.core.somaxconn = 65535 | ||
+ | net.core.netdev_max_backlog = 65535 | ||
+ | </ | ||
+ | |||
+ | Высокие значения указаны лишь для примера и лучше использовать подходящие под конкретную систему. | ||
+ | |||
+ | К сожалению это не помогло. | ||
+ | |||
+ | Понадобилась еще одна настройки в fpm пуле | ||
+ | |||
+ | < | ||
+ | |||
+ | или установить unlimited | ||
+ | |||
+ | < | ||
+ | |||
+ | FIXME изучить дополнительно / [[https:// | ||
+ | |||
+ | ==== fastcgi_intercept_errors ==== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== nginx: [warn] 4096 worker_connections exceed open file resource limit: 1024 ==== | ||
+ | |||
+ | OKGOOGLE. Проверим текущие soft/hard лимиты файловых дескрипторов и открытых файлов для master процесса nginx | ||
+ | |||
+ | < | ||
+ | # cat /proc/$(cat / | ||
+ | Max open files 1024 4096 files | ||
+ | </ | ||
+ | |||
+ | Далее (подсмотрел на stackoverflow кажется) проверим для дочерних процессов (worker) | ||
+ | |||
+ | < | ||
+ | # ps --ppid $(cat / | ||
+ | Max open files 1024 4096 files | ||
+ | Max open files 1024 4096 files | ||
+ | Max open files 1024 4096 files | ||
+ | Max open files 1024 4096 files | ||
+ | </ | ||
+ | |||
+ | Добавить в ''/ | ||
+ | 16384 | ||
+ | < | ||
+ | nginx soft nofile 16384 | ||
+ | nginx hard nofile 16384 | ||
+ | </ | ||
+ | |||
+ | В '' | ||
+ | * worker_processes 4; | ||
+ | * worker_connections 4096; | ||
+ | * worker_rlimit_nofile 16384; | ||
+ | |||
+ | < | ||
+ | for pid in `pidof nginx`; do echo " | ||
+ | </ | ||
+ | |||
+ | upd FIXME | ||
+ | |||
+ | в centos7 ''/ | ||
+ | |||
+ | < | ||
+ | [Service] | ||
+ | LimitNOFILE=16384 | ||
+ | </ | ||
+ | |||
+ | ==== could not build the server_names_hash ==== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Ошибка | ||
+ | |||
+ | < | ||
+ | could not build the server_names_hash, | ||
+ | </ | ||
+ | |||
+ | Просто сделай больше LOL | ||
+ | |||
+ | < | ||
+ | http { | ||
+ | |||
+ | ...snip... | ||
+ | server_names_hash_bucket_size 64; | ||
+ | ...snip... | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 413 Request Entity Too Larget ==== | ||
+ | |||
+ | Ошибка появляется при загрузке файлов больше 1 мегабайта. Одна из причин — это дефолтные настройки nginx, а точнее параметра **client_max_body_size**, | ||
+ | |||
+ | Директива **client_max_body_size** задаёт максимально допустимый размер тела запроса клиента, | ||
+ | |||
+ | Подробнее в документации[[http:// | ||
+ | |||
+ | Решение\\ | ||
+ | Изменить размер **client_max_body_size** | ||
+ | |||
+ | ==== upstream sent too big header while reading response header from upstream, client ==== | ||
+ | |||
+ | Что такое [[http:// | ||
+ | |||
+ | Исправляется добавлением двух последних строк в конфиг Nginx: | ||
+ | |||
+ | < | ||
+ | http { | ||
+ | include / | ||
+ | default_type application/ | ||
+ | |||
+ | proxy_buffers 8 16k; | ||
+ | proxy_buffer_size 32k; | ||
+ | </ | ||
+ | |||
+ | А если по-русски, | ||
+ | |||
+ | < | ||
+ | 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_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 | ||
+ | </ | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ==== Ошибки 404/403 apache+nginx HTTP/1.0 HTTP/1.1 ==== | ||
+ | |||
+ | // | ||
+ | |||
+ | В качестве обхода проблемы (особенно если используется не Apache) по идее также должна помочь установка nginx >= 1.1.4 или **chunked_transfer_encoding off**. | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ==== 414 Request URI Too Large ==== | ||
+ | |||
+ | **nginx** via https:// | ||
+ | |||
+ | '' | ||
+ | |||
+ | // | ||
+ | |||
+ | Большой URL, в основном из-за плохого дизайна приложения. | ||
+ | |||
+ | FIXME **apache** | ||
+ | |||
+ | Увеличиваем размер для [[http:// | ||
+ | |||
+ | < | ||
+ | LimitRequestLine | ||
+ | LimitRequestFieldSize 102400 | ||
+ | </ | ||
+ | |||
+ | ==== 504 SSL_do_handshake() failed | ||
+ | |||
+ | via http:// | ||
+ | |||
+ | При проксировании https даже без сертификатов (чисто прокси) при реальной работе ловили | ||
+ | < | ||
+ | |||
+ | и 502 Bad Gateway. | ||
+ | |||
+ | Как ни странно, | ||
+ | < | ||
+ | |||
+ | Помогло. Непонятно, | ||
+ | |||
+ | ==== 400 Bad Request Request Header Or Cookie Too Large ==== | ||
+ | |||
+ | Самое просто решение - почистить куки. Если же сервер наш, можно подкрутить настройки серверов: | ||
+ | |||
+ | для nginx [[http:// | ||
+ | < | ||
+ | |||
+ | Можно выставить например 16к, но дальше будет ошибка | ||
+ | < | ||
+ | Size of a request header field exceeds server limit.</ | ||
+ | |||
+ | Потому что надо увеличить эти же значения и для apache | ||
+ | < | ||
+ | |||
+ | Можно выставить | ||
+ | < | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ==== could not build the server_names_hash, | ||
+ | |||
+ | < | ||
+ | |||
+ | {{tag> |
linux/nginx/nginx_error.txt · Последнее изменение: 2024/11/04 14:21 — dx