Серверное приложение узла EC2 [время ожидания шлюза 504]

#nginx #amazon-ec2 #pm2

#nginx #amazon-ec2 #pm2

Вопрос:

Работает пару часов, а затем я получаю ошибку 504 gateway timeout на серверной части приложения.

Экземпляр EC2 работает под управлением ubuntu с nginx и PM2.

/etc/nginx/sites-available файл .conf:

 server {
  listen 80;
  server_name mydomain.com;
  root /home/ubuntu/app;
  index index.html;

  access_log /var/log/nginx/app.access.log;
  error_log /var/log/nginx/app.error.log;
  location / {
    try_files $uri /index.html =404;
  }
}

server {
    listen 8080;
    server_name mydomain.com;
    location / {
      proxy_pass http://127.0.0.1:3000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
      proxy_redirect off;
     }
}
  

Я считаю, что моя конфигурация верна, поскольку она работает правильно, но только в течение нескольких часов. Затем я получаю сообщение об ошибке. Экземпляр PM2 все еще подключен к сети и запущен. Я думаю, что, вероятно, по какой-то причине происходит сбой приложения узла, но как я могу устранить это в ubuntu EC2? Он отлично работает на моем локальном компьютере.

Любые предложения будут оценены.

Комментарии:

1. Вы проверили журналы вашего приложения узла?

2. Я не верю, что регистрирую ошибки для узла на сервере, мне нужно сделать это вручную, верно?

3. Проверьте документацию PM2: pm2.keymetrics.io/docs/usage/log-management

4. @jarodsmk добавил ответ, который сработал для меня, потребовалось много часов поиска и настройки конфигурации, чтобы найти то, что сработало. Но, в частности, мне помог приведенный ниже ответ.

5. @John107 спасибо, чувак. В итоге у меня возникла проблема с оптимизацией кодирования, с которой я разобрался

Ответ №1:

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

В частности, добавление этих двух строк:

 proxy_set_header Connection '';
keepalive_timeout 10;