apache 伺服器中緩慢載入 nextjs (nodejs) 應用程式

apache 伺服器中緩慢載入 nextjs (nodejs) 應用程式

免責聲明:所有時間指標都是透過開發人員工具測量的

情境

我有一個下一個js應用程式託管在 vps (ovh) 中。

nextjs 應用程式3000透過在我的 vps 上的連接埠運行pm2

當我在heroku(免費方案)中部署應用程式時,一切正常。

在本地,生產建置也可以,並且網站載入時間不到 1 秒。

該網站由 Apache 反向代理提供服務。

如果我的虛擬主機配置為提供文件(index.html例如)並且不像反向代理那樣使用,則一切正常。

問題

問題是:當我透過導航器加載網站時,網站需要+2 分鐘才能加載。

看到在heroku上一切正常(在本地也是如此)我懷疑我的伺服器配置。

版本資訊

➜ 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 虛擬主機配置

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 日誌沒有說任何有趣的事情。

結束後

我已經解決這個問題三天了,歡迎任何幫助。

如果您想了解更多信息,請隨時詢問。

相關內容