nginx 打开 spdy 失败
- 0次
- 2021-05-26 16:53:10
- idczone
用nodejs写了一个server,使用了nodejs-spdy模块,监听8000端口,然后用nginx做反向代理,根据教程安装了nginx spdy module并配置(配置文件如下),但是用chrom美国服务器e访问时,通过chrome内置的spdy检查发现并没有走spdy(查看network的header也没有spdy的格式),求解答!
http {
upstream frontends {
server 127.0.0.1:8000;
}
server {
root /path/to/root;
listen 443 spdy ssl;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
location / {
add_header alternate-protocol 443:npn-spdy/3;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass https://frontends;
}
}
}
然后通过网站检测发现,他会说443 no listening 对不
通过spdycheck.org检测,发现是由spdy的。。。这才是奇怪的地方。。
估计和nginx支持的spdy版本有关,我的nginx的spdy版本还是SPDY/2
spdycheck.org 检有就对了么,你的chrome 是不是版本,啊,设置什么的不对!
终端输入 nginx -V 看一下nginx的版本和配置
Ubuntu默认的是1.4.6版本只支持SPDY2,而Chrome已经放弃支持SPDY2了
解决方法是升级到1.6.2或者我记得V2EX的报错页面显示的nginx版本是1.7了。。。
在 Ubuntu 上可以用 PPA 安装最新版本的 Nginx:
https://launchpad.net/~chris-lea/+archive/ubuntu/nginx-devel
5楼正解。Chrome要SPDY3+,老版本nginx只支持SPDY2,协商不成只能走普通https。
果然是版本问题,重新下了一个1.7.7的nginx,重新编译安装。。中间还耗了很长时间把之前的卸载掉。。重新装了新版本就行了,之前只支持spdy2,多谢各位
一般来说,如果要编译升级nginx,只要把nginx编译好以后的二进制文件覆盖掉原始文件,然后执行service nginx upgrade就行了。
貌似现在用service或者/etc/init.d来重启nginx都没有作用。。改了conf也没有重新加载。。有办法完全卸载然后重新安装吗
最好是用系统包安装然后再覆盖nginx。我不知道你是怎么安装的所以也不太好说明。
而且ubuntu向来是以拒绝升级为主旨的,如果喜欢把玩新科技的建议debian。
ok