错误代码:ERR_SPDY_PROTOCOL_ERROR

错误代码:ERR_SPDY_PROTOCOL_ERROR

刚刚在我的 debian wheezy、nginx 1.6 服务器上安装了 StartSSL 证书。
一切似乎都运行良好,我可以在 https 中浏览网站,没有任何问题,直到我尝试登录...
IE 运行正常,我可以登录 OK。Chrome
给我这个错误:错误代码:ERR_SPDY_PROTOCOL_ERROR
Firefox 只是挂起,什么也不做。

当我放弃 StartSSL 证书并使用自签名证书时,一切又恢复正常,我可以毫无问题地登录。

我的 nginx 配置:

server {
     listen 443 ssl spdy;
     server_name test.com;
    root /home/www/test.com/;
    ssl on;
    ssl_certificate        /etc/nginx/certs/test.com.crt;
    ssl_certificate_key    /etc/nginx/certs/test.com.key;

     access_log /logs/access.log;
     error_log /logs/error.log;
     error_page 404 /404.html;

     location / {
         index index.php index.html index.htm;
         try_files $uri $uri/ /index.php?$args;
        }

..........
.........
}

有什么建议可能存在什么问题吗?

答案1

我遇到此问题是因为我已经更改了 nginx 用户,但它无权访问 /var/lib/nginx。我通过为新用户更改 /var/lib/nginx 来解决这个问题。

答案2

如果这对将来的任何人都有帮助,因为这是顶级搜索结果之一,我遇到了这个错误,但出于某种原因,我还没有看到提到。

虽然看起来是 Nginx 出了问题,但在同一台服务器上,我使用类似配置的其他网站运行良好。结果发现,这实际上是 PHP 标头重定向中的一个错误,我们的一名程序员忘记在地址前加上“Location:”,这似乎破坏了标头并导致 Chrome 中出现此错误。所有其他浏览器都忽略了它。

因为它是 index.php 中的第一行,所以它在看到网站的任何内容之前就已经中断了,看起来好像它影响了整个网站,但实际上只是那个页面。

答案3

添加适当的 Content-Type 标头即可修复此问题。

["内容类型"] = "text/html; 字符集=utf-8"

相关内容