Apache サーバーで nextjs (nodejs) アプリの読み込みが遅い

Apache サーバーで nextjs (nodejs) アプリの読み込みが遅い

免責事項:すべての時間指標は開発者ツールを通じて測定されます

コンテクスト

私は次jsVPS (OVH) でホストされるアプリ。

nextjs アプリは、3000経由で私の VPS 上のポートで実行されますpm2

Heroku (無料プラン) でアプリをデプロイすると、すべて正常に動作します。

ローカルでは、本番ビルドも問題なく、サイトの読み込みには 1 秒もかかりません。

このサイトは Apache リバース プロキシの背後で提供されます。

私の vhost がファイルを提供するように構成されていて (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 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日間取り組んでいます。どんな助けでも大歓迎です。

さらに詳しい情報をご希望の場合は、お気軽にお問い合わせください。

関連情報