The err_spdy_protocol_error error: what it looks like
You see the error in your browser like this.
In the Network Tab of your inspector, it looks like this.
That’s not good, right.
Where does the err_spdy_protocol_error error come from?
The solution to the “err_spdy_protocol_error” problem turned out to be really simple, at least in this case, by just looking at the error logs produced by this vhost.
$ tail -f /var/www/site.be/logs/error.log 2014/12/18 00:15:01 [crit] 1041#0: *3 open() "/usr/local/nginx/fastcgi_temp/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 22.214.171.124, server: ma.ttias.be, request: "GET /page.php?..."
To enable SPDY I had upgraded my Nginx to the latest available 1.7.8, but in the process of that installation it seems some file permissions were incorrectly modified. For instance, the FastCGI cache – the one that holds the responses for the PHP-FPM upstream – were owned by user
nobody, with only write permissions to the owner.
$ ls -alh /usr/local/nginx/fastcgi_temp drwx------ 12 nobody root 4096 Feb 11 2012 fastcgi_temp
And as an obvious result, Nginx couldn’t write to that cache directory. Modified the permissions to grant the user
nginx write permissions, and all errors were gone.
$ chown nginx:nginx /usr/local/nginx/fastcgi_temp/ -R
And all SPDY protocol errors were gone. Conclusion? Check the errors logs when you implement a new protocol in the middle of the night.
If you get the err_spdy_protocol_error error as a user, and don’t manage the site you’re visiting, there isn’t much you can do. The problem is with the server, so if you can’t change that, you can’t fix the err_spdy_protocol_error error. If you really want to visit that site, try another browser (one that doesn’t support SPDY/HTTP2).