Медленная загрузка приложения nextjs (nodejs) на сервере Apache

Медленная загрузка приложения nextjs (nodejs) на сервере Apache

Отказ от ответственности: все показатели времени измеряются с помощью инструмента разработчика.

Контекст

у меня естьnextjsприложение размещено на VPS (OVH).

Приложение nextjs запускается в порту 3000на моем VPS через pm2.

Когда я развертываю приложение в Heroku (бесплатный план), все работает нормально.

Локальная сборка тоже работает нормально, а загрузка сайта занимает менее 1 секунды.

Сайт обслуживается обратным прокси-сервером Apache.

Если мой виртуальный хост настроен на обслуживание файла ( index.htmlнапример), а не используется как обратный прокси-сервер, то все работает нормально.

Проблема

Проблема в следующем: когда я загружаю сайт через навигатор, загрузка сайта занимает +2 минуты.

Видите, на heroku все работает (и на local тоже). Подозреваю, что дело в конфигурации моего сервера.

Информация о версиях

➜ node -v
v10.21.0
➜ yarn -v
1.22.5
➜ pm2 -v
4.5.1
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

Конфигурация Apache vhost

http

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName domain.dev
  ServerAlias www.domain.dev
  DocumentRoot /var/www/domain.dev/placeholder-pws
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =domain.dev [OR]
  RewriteCond %{SERVER_NAME} =www.domain.dev
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

https

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ProxyPreserveHost On
    ServerAdmin [email protected]
    ServerName domain.dev
    ServerAlias www.domain.dev
    # DocumentRoot /var/www/domain.dev/placeholder-pws
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPass "/" "http://localhost:3000/"
    ProxyPassReverse "/" "http://localhost:3000/"

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/domain.dev/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.dev/privkey.pem
  </VirtualHost>
</IfModule>

проверьте, что приложение запущено

➜ netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::3000                 :::*                    LISTEN      14383/node
➜  ps -p 14383 -o comm=
node

журналы

У меня 0 логинов pm2 monitи .pm2/logs/nextjs-error.logпусто.

.pm2/logs/nextjs-out.logсказать

0|nextjs   | $ next start -p 3000
0|nextjs   | ready - started server on http://localhost:3000

В журнале Apache ничего интересного не обнаружено.

конец поста

Я бьюсь над этой проблемой уже 3 дня, любая помощь приветствуется.

Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

Связанный контент