Descargo de responsabilidad: todas las métricas del tiempo se miden a través de la herramienta de desarrollador
Contexto
tengo unsiguientejsaplicación alojada en un vps (ovh).
La aplicación nextjs se ejecuta en el puerto 3000
de mi vps a través de pm2
.
Cuando implemento la aplicación en heroku (plan gratuito), todo funciona bien.
En local, la compilación de producción también está bien y el sitio tarda <1 segundo en cargarse.
El sitio funciona detrás de un proxy inverso de Apache.
Si mi vhost está configurado para servir un archivo ( index.html
por ejemplo) y no se usa como proxy inverso, todo funciona bien.
El problema
El problema es: cuando cargo el sitio a través de un navegador, el sitio tarda más de 2 minutos en cargarse.
Vea que en heroku todo funciona (y en local también). Sospecho que la configuración de mi servidor.
Información de versiones
➜ 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
configuración de servidor virtual apache
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>
comprobar que la aplicación se está ejecutando
➜ 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
registros
Tengo 0 inicios de sesión pm2 monit
y .pm2/logs/nextjs-error.log
está vacío.
.pm2/logs/nextjs-out.log
decir
0|nextjs | $ next start -p 3000
0|nextjs | ready - started server on http://localhost:3000
El log de Apache no dice nada interesante.
final de publicación
Llevo 3 días con este problema, cualquier ayuda es bienvenida.
Si quieres más información no dudes en preguntar.