免責聲明:所有時間指標都是透過開發人員工具測量的
情境
我有一個下一個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 日誌沒有說任何有趣的事情。
結束後
我已經解決這個問題三天了,歡迎任何幫助。
如果您想了解更多信息,請隨時詢問。