因此,我使用 Forge Laravel 服务在 Nginx 中设置了一个站点。在未启用 SSL 的情况下,该站点对我来说加载良好,使用 Pingdom 站点测试也能加载良好。
但是,如果我启用 SSL 证书(即在 Nginx 配置中使用 HTTP/2),那么网站可以正常加载,但在 Pingdom 上会出现连接错误,并且只显示网站无法加载的灰色屏幕截图。由于某种原因,网站没有回退到 HTTP/1.1 吗?因为我知道 Pingdom 不支持 HTTP/2。
我已经使用 Pingdom 测试过此服务器上每个具有 SSL 的站点,并且得到了相同的结果,因此我认为这一定与 Laravel Forge 的设置方式有关,就好像我在其他地方托管的 SSL HTTP/2 站点上进行测试一样,Pingdom 仍然有效,并且显然会回退到 HTTP/1.1
以下是该站点的 Nginx conf 文件:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cashbook.evaske.com;
root /home/forge/cashbook.evaske.com/build;
# FORGE SSL (DO NOT REMOVE!)
ssl_certificate /etc/nginx/ssl/cashbook.evaske.com/372692/server.crt;
ssl_certificate_key /etc/nginx/ssl/cashbook.evaske.com/372692/server.key;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/cashbook.evaske.com/server/*;
location / {
try_files $uri /$uri /index.html;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/cashbook.evaske.com-error.log error;
error_page 404 /index.php;
location ~ /\.(?!well-known).* {
deny all;
}
}
您是否需要查看服务器上的任何其他配置文件来帮助找出发生这种情况的原因?该网站通过例如 Google Page Test 加载正常,所以我怀疑这与 HTTP/2 有关,并且由于某种原因没有回退到 HTTP/1.1?