Apache 服务器中 nextjs(nodejs)应用加载缓慢

Apache 服务器中 nextjs(nodejs)应用加载缓慢

免责声明:所有时间指标均通过开发者工具进行测量

语境

我有一个nextjs应用程序托管在 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 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 日志没有提及任何有趣的内容。

帖子结束

我已经遇到这个问题三天了,欢迎任何帮助。

如果您想了解更多信息,请随时询问。

相关内容