Отказ от ответственности: все показатели времени измеряются с помощью инструмента разработчика.
Контекст
у меня есть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 дня, любая помощь приветствуется.
Если вам нужна дополнительная информация, не стесняйтесь спрашивать.