Как исправить 504 gateway time out Nginx

Веб-сервер Nginx часто работает не только в качестве самого веб-сервера для отдачи контента, но и в качестве прокси, когда он вступает только посредником. Такая ситуация наблюдается намного чаще, чем можно было бы ожидать. Например, при работе с php-fpm и другими модулями динамических языков.

Именно в таком режиме может наблюдаться ошибка 504 gateway time out Nginx. В нашей сегодняшней статье мы попытаемся разобраться почему она возникает и как с ней бороться. Разберем несколько способов решения и причин.

Что значит 504 gateway time out Nginx?

Как я уже сказал, такая ошибка возникает, когда сервер Nginx работает в режиме прокси. Например, при использовании php-fpm или Apache. Дословно, она означает, что превышено время ожидания ответа от сервера. В нашем случае, превышено время ожидания ответа от php-fpm. Рассмотрим несколько причин такого поведения:

Дальше рассмотрим что можно сделать если вы встретились с ошибкой 504 gateway time out Nginx.

Как исправить 504 gateway time out Nginx?

Нагрузку на процессор можно узнать командой htop:

Естественно, если вы видите, что PHP занимает все процессорное время, то значит проблема в ресурсах сервера. Вы можете покопаться в движке своего сайта, пытаться оптимизировать те или иные моменты, об этом будет отдельная статья или же выбрать более мощный VPS сервер.

fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

Здесь 300 означает 300 секунд, для большинства скриптов, этого будет вполне достаточно, но вы можете еще больше увеличить значение если это нужно. Также ошибка 504 может возникать, когда Nginx используется в качестве прокси для Apache или любого другого веб-сервера, тогда нужно еще настроить время ожидания для прокси. Добавьте эти строки в секцию server:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

sudo systemctl restart nginx

Более подробную информацию иногда можно увидеть в error. log:

Дальше, если проблема именно в php-fpm, вы можете отследить какие скрипты выполняются медленно с помощью встроенной функции slow-log. Для ее активации добавьте следующие строки в конфигурацию вашего пула:

sudo vi /etc/php-fpm. d/www. conf

slowlog = /var/log/php-fpm/www-slow. log
request_slowlog_timeout = 5s

Здесь 5 секунд, означает, что в лог файл будут добавляться скрипты, которые выполняются дольше пяти секунд. Вы можете менять это значение по своему усмотрению. В логе вы сможете увидеть не только сами скрипты, но и трассировку методов, которые привели к проблемам:

Дальше останется только разобраться что с этим делать, например, оптимизировать скрипты или отключить лишние плагины.

Выводы

В этой статье мы рассмотрели как исправить 504 gateway time out Nginx 1.2 7, а также почему может возникнуть эта ошибка. Надеюсь, эта информация была полезной для вас.

Установка Nextcloud

Инструкция по установке Nextcloud на Centos 7, Ubuntu 18.04 server, +apache, mariadb, fail2ban, postfix, ssl let's encrypt, регистрация домена, Яндекс коннект, NGINX

Ошибки после обновления Nextcloud.

Ошибки после обновления. Centos 7


Исправим последнюю ошибку:
Заголовок HTTP «Referrer-Policy» не содержит значения «no-referrer», «no-referrer-when-downgrade», «strict-origin» или «strict-origin-when-cross-origin», что может привести к утечке информации об адресе источника перехода по ссылке

]$ sudo nano /etc/httpd/sites-available/nextcloud. conf
#Header always set Referrer-Policy no-referrer
<IfModule mod_headers. c>
Header always set Strict-Transport-Security «max-age=31536000; includeSubDomains; preload»
#Header always set Referrer-Policy no-referrer
Header set Feature-Policy «geolocation ‘none’; midi ‘none’; microphone ‘none’; camera ‘none’; magnetometer ‘none’; gyroscope ‘none’; sp$
</IfModule>

Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running ‘occ db:convert-filecache-bigint’ those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this.
• filecache. mtime
• filecache. storage_mtime

Некоторые индексы базы данных не были преобразованы в тип big int. Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint».

Переведем NC в режим обслуживания:

]$ cd /var/www/html/nextcloud/
[user@server nextcloud]$

Following columns will be updated:

This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] Y

Выключаем режим обслуживания:

Проверяем сообщение о количестве памяти «The current PHP memory limit is below the recommended value of 512MB.»

+
Предупреждения о текущей конфигурации:
В базе данных отсутствуют некоторые необязательные столбцы. Из-за того, что добавление столбцов в больших таблицах может занять некоторое время, они не добавляются автоматически, если они могут быть необязательными. Запустив «occ db:add-missing-columns», эти недостающие столбцы можно добавить вручную, пока экземпляр продолжает работать. После добавления столбцов некоторые функции могут улучшить отзывчивость или удобство использования.
Отсутствует необязательный столбец «reference_id» в таблице «oc_comments».

Ошибки после обновления Nextcloud. Ubuntu 19.04 server Nginx

1. The old server-side-encryption format is enabled. We recommend disabling this. For more details see the documentation.
Если ранее включали шифрование, но затем отключили, вы все еще можете видеть это предупреждение, удалим или закомментируем строки в config/config. php:

# nano /var/www/html/nextcloud/config/config. php
***
// ‘encryption. legacy_format_support’ => true,
// ‘encryption. key_storage_migrated’ => false,
// ‘updater. secret’ => ‘12345678XXXXXXXXXXXXXXXXXXXXXX’,
);
root@test:

2. Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.
Необходимо добавить строку: add_header X-Frame-Options SAMEORIGIN; в конфигурацию виртуального хоста Nginx:

# nano /etc/nginx/sites-available/nextcloud. conf
***
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection «1; mode=block»;
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
add_header X-Frame-Options SAMEORIGIN;
***
root@test:

3. Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.

# nano /var/www/html/nextcloud/config/config. php
***
‘memcache. local’ => ‘\OC\Memcache\APCu’,
***
);
root@test:

4. В базе данных отсутствуют некоторые индексы. Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее.

5. В базе данных отсутствуют некоторые необязательные столбцы. Из-за того, что добавление столбцов в больших таблицах может занять некоторое время, они не добавляются автоматически, если они могут быть необязательными. Запустив «occ db:add-missing-columns», эти недостающие столбцы можно добавить вручную, пока экземпляр продолжает работать. После добавления столбцов некоторые функции могут улучшить отзывчивость или удобство использования.

6. В системе не установлены рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить эти модули.
bcmath
gmp

Фоновые задания Nextcloud 21-22 версии. Последнее задание было выполнено nn минут, часов или дней назад. Похоже, что-то не в порядке.
Вероятнее всего вы используете кэширование APCu, например в файле конфигурации /var/www/html/nextcloud/config/config. php:
‘memcache. local’ => ‘\\OC\\Memcache\\APCu’,
Для centos7 (php7.4) потребуется отредактировать файл по пути «/etc/php. d/40-apcu. ini»
Находим строку «;apc. enable_cli=0», раскомментируем и изменим значение на 1:
apc. enable_cli=1

Через несколько минут проверьте результат:
«Фоновые задания. Последнее задание выполнено несколько секунд назад.»

Источники:

https://losst. ru/kak-ispravit-504-gateway-time-out-nginx

https://enk2x. ru/glstr/errorsupdate/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: