免责声明:所有时间指标均通过开发者工具进行测量
语境
我有一个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 日志没有提及任何有趣的内容。
帖子结束
我已经遇到这个问题三天了,欢迎任何帮助。
如果您想了解更多信息,请随时询问。