На текущем сайте example.com под управлением Drupal 7 в error лог Nginx обнаружили 2 типа ошибок:
Ошибка, вызываемая неверным запросом ссылки: /sites/default/files/styles/news_thumb/public?itok=TDBjZ3_e
2024/09/22 01:24:54 [error] 140592#140592: *61167
upstream sent invalid "Content-Length"
header: "Content-Length: " while reading response header from upstream,
client: 47.128.116.248,
server: example.com,
request: "GET /sites/default/files/styles/news_thumb/public?itok=TDBjZ3_e HTTP/2.0",
upstream: "fastcgi://unix:/run/php/php7.4-fpm-example.com.sock:",
host: "example.com",
referrer: "https://example.com/en/news/some-new-message"
Фризы с вылетом в 500/502
2024/10/23 19:16:16 [error] 1182461#1182461: *573499
connect() to unix:/run/php/php7.4-fpm-example.com.sock failed
(11: Resource temporarily unavailable) while connecting to upstream,
client: 154.213.195.169,
server: example.com,
request: "GET / HTTP/2.0",
upstream: "fastcgi://unix:/run/php/php7.4-fpm-example.com.sock:",
host: "example.com"
ссылки, которые нагуглил:
- https://www.digitalocean.com/community...t-on-nginx
- https://stackoverflow.com/questions/52...ed-11-r...
- https://serverfault.com/questions/8434...ble-whi...
В логах недостаточно информации для того, чтобы понять что именно вызывает фризы. Перепробовал различные варианты, чтобы быстро решить проблемы (что нагуглил + предложения от ChatGPT).
Хотя обычно считается, что работа через сокет надёжнее, в статье на DigitaloOcean указано:
In some cases, switching from a Unix socket to a TCP/IP socket for PHP-FPM can help, especially if you’re running into file descriptor limits.
--
В конфиге "/etc/php/7.4/fpm/pool.d/example.com.conf" прописал:
listen = 127.0.0.1:9003
В конфиге /home/user/conf/web/example.com/nginx.conf
fastcgi_pass 127.0.0.1:9003;
Также возникали такие ошибки:
2024/10/27 14:45:49 [alert] 347152#347152: *42845
1024 worker_connections are not enough while connecting to upstream,
client: 156.253.168.12, server: example.com,
request: "GET / HTTP/2.0", upstream: "fastcgi://127.0.0.1:9003",
host: "example.com"
Суть из лога: "1024 worker_connections are not enough while connecting to upstream"
Увеличил параметр worker_connections в конфиге: (Источник: https://stackoverflow.com/questions/56723449/nginx-error-1024-worker-connections-are-not-enough )
# Worker config
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
p.s. Важно помнить, что Hestia CP перезаписывает конфиг по шаблону и ставит опять сокет (при обновлении панели или при изменении каких-либо параметров конфигурации nginx через панель). Поэтому лучше сделать для такого сайта отдельные темплейты tpl и stpl.