我有一台 nginx 服务器,当用户按下 ctrl+shift+r 或 ctrl+F5 时,它无法正确提供 ssl。这些快捷方式会重新加载页面并绕过浏览器缓存。它似乎在 Chrome 和 IE 中有效。为了测试这一点,我使用了一个带有表单的 html 文件来创建帖子请求。
我还最小化了服务器块:
#test
server
{
listen 443 ssl;
server_name example.com;
root /etc/nginx/html;
ssl_certificate /etc/letsencrypt/live/exapmple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location ~ \.php$
{
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
include fastcgi_params;
}
}
我已经尝试过的:
- 访问和错误日志显示没有请求。
- 开发者控制台在时间概览中仅显示“连接”和“发送”,而不显示“等待”和“接收”
- 它也只显示请求标头。
- 我在 Windows 7 上使用 Firefox 46
- 仅当使用 https 时才会发生此错误
如果你想尝试一下,我已经上传了一个带有此表单的示例:
<form method="POST">
<input type="text" value="123" name="testname"/>
<input type="submit" value="GO"/>
</form>
没有具体的错误,只是说“安全连接失败,页面加载时连接被重置”。
使用插件记录的工作请求:
https://example.com/post.php
POST /post.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Referer: https://example.com/post.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
testname=123
HTTP/2.0 200 OK
Server: nginx
Date: Sat, 23 Apr 2016 20:18:41 GMT
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
X-Firefox-Spdy: h2
我怎样才能避免这个错误?
解决方案:这种情况似乎只发生在我的设备上。因此,我认为这是一个本地错误,而不是服务器的错误。