技术宅改变世界 技术宅改变世界

nginx配置HTTP/2

in Dev read (1923) 文章转载请注明来源!

配置http/2必须要https,免费的ssl证书挺多的(个人用感觉差距不大),比如阿里跟腾讯的赛门铁克免费证书,更多可以自行去百度查找。

按照centos7.2配置lnmp操作,不同环境配置可能不一样。

1、配置https+http/2

vi /etc/nginx/conf.d/run.la.conf
#run.la.conf 是要修改的网站配置文件
#将listen 80;修改为listen 443 ssl http2;
#并且将下面的内容帖上去。
ssl_certificate run.la.pem; #证书公钥对应的目录
ssl_certificate_key run.la.key; #证书私钥对应的目录
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
systemctl restart nginx.service
#重启nginx,使配置生效。

这个时候https+http/2就已经配置好了,但是http的页面依然还没有跳转。

2、配置http跳转

vi /etc/nginx/conf.d/run.la.conf
#run.la.conf 是要修改的网站配置文件

将下面内容帖到文件末尾并保存。

server
    {
        listen 80;
        server_name run.la; #网站域名
        return 301 https://run.la/$request_uri;#https://域名/$request_uri
    }
systemctl restart nginx.service
#重启nginx,使配置生效。

如果在程序兼容的情况下,网站已经可以正常运行了。

3、关于chrome 51+与火狐

但是还有一点要说的,chrome 51+测试可能是不支持http/2的,因为chrome从51版本起抛弃了NPN,而改用最新的ALPN,可是大部分操作系统自带的openssl都不是1.0.2以上版本,而openssl 1.0.2以下版本不支持ALPN,因此在浏览器在与服务端协商的情况下默认降成了http1.1,而火狐是直接就提示不安全,也不降到http1.1,不给用户访问了。

支持openssl 1.0.2操作系统(从nginx官网搬的):

Operating System OpenSSL Version ALPN and NPN Support
CentOS/Oracle Linux/RHEL 5.10+ 0.9.8e Neither
CentOS/Oracle Linux/RHEL 6.5+, 7.0+ 1.0.1e NPN
Ubuntu 12.04 LTS 1.0.1 NPN
Ubuntu 14.04 LTS 1.0.1f NPN
Ubuntu 16.04 LTS 1.0.2g ALPN and NPN
Debian 7.0 1.0.1e NPN
Debian 8.0 1.0.1k NPN

想要让chrome 51+版本支持你网站的http/2,nginx给了三种解决方法:

    1)、升级操作系统,比如ubuntu 16.04。

     2)、自己通过源码编译nginx,并且使用openssl 1.0.2构建,但是以后更新程序非很繁重。

    3)、使用容器。

英语水平有限,大家可自行去nginx官网看。

openssl version
#查看服务器openssl版本
nginxhttpshttp2chromeopenssl1.0.2
发表新评论
博客已萌萌哒运行
© 2024 • Powered by Typecho • Theme for yotu
PREVIOUS NEXT
雷姆
拉姆