Haftungsausschluss: Alle Zeitmetriken werden über das Entwicklertool gemessen
Kontext
Ich habe einnächstesjsApp in einem VPS (OVH) gehostet.
Die NextJS-App läuft im Port 3000
auf meinem VPS über pm2
.
Wenn ich die App in Heroku bereitstelle (kostenloser Plan), funktioniert alles einwandfrei.
Auch lokal ist der Produktionsbuild in Ordnung und das Laden der Site dauert <1 s.
Die Site wird hinter einem Apache-Reverse-Proxy bereitgestellt.
Wenn mein virtueller Host beispielsweise zum Bereitstellen einer Datei konfiguriert ist index.html
und nicht als Reverse-Proxy verwendet wird, funktioniert alles einwandfrei.
Das Problem
Das Problem ist: Wenn ich die Site über einen Navigator lade, dauert das Laden der Site mehr als 2 Minuten.
Wenn ich sehe, dass auf Heroku alles funktioniert (und auch lokal), vermute ich, dass es an der Serverkonfiguration liegt.
Versionsinformationen
➜ 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-Konfiguration
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>
Überprüfen Sie, ob die App ausgeführt wird
➜ 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
Protokolle
Ich habe 0 Logins pm2 monit
und .pm2/logs/nextjs-error.log
es ist leer.
.pm2/logs/nextjs-out.log
sagen
0|nextjs | $ next start -p 3000
0|nextjs | ready - started server on http://localhost:3000
Im Apache-Protokoll steht nichts Interessantes.
Beitragsende
Ich beschäftige mich seit drei Tagen mit diesem Problem und bin für jede Hilfe dankbar.
Wenn Sie weitere Informationen wünschen, fragen Sie einfach.