HTTP/2学习之路

HTTP/2协议介绍

http://httpwg.org/specs/rfc7540.html#rfc.section.2.1

当前实现

HTTP/2 server端实现

1. NGINX

要求nginx的最低版本是1.9.5,openssl的最低版本是1.0.2

1 前置软件
pcre,openssl,zlib

2 安装nginx

# 下载地址 http://nginx.org/download/
tar -zxvf nginx-1.13.6.tar.gz
cd nginx-1.13.6
# --with-openssl 和--with-pcre指的是两个软件的源码路径。后面两个参数开启ssl和http2模块
./configure  --with-openssl=../openssl-1.0.2e --with-pcre=./pcre --with-http_ssl_module --with-http_v2_module
make
make install

3 申请自签名证书。这种签名不会被浏览器认可,所以会被标记成不安全

。。。

4 开启ssl和http2,更改nginx.conf

server {
    listen       443 ssl http2;
    server_name  localhost;
    ssl                  on;
    ssl_certificate      /usr/local/nginx/conf/server.crt;
    ssl_certificate_key  /usr/local/nginx/conf/server_nopwd.key;
    ...
}

5 将http请求转发到https

server {
    listen       80;
    server_name  localhost;
    return 301  https://$host$request_uri;
    ...
}

6 多台机器部署请求转发

http {
    upstream project{
        server 10.221.85.193:8083;
    }
    server {
        listen       80;
        server_name  localhost;
        return 301  https://$host$request_uri;
        ...
    }
    server {
        listen       443 ssl http2;
        server_name  localhost1;

        ssl                  on;
        ssl_certificate      /usr/local/nginx/conf/server.crt;
        ssl_certificate_key  /usr/local/nginx/conf/server_nopwd.key;
        location / {
            proxy_pass http://project/;
        }
    }
    ...
}

Apache Tomcat 8.5+

Jetty

Netty

SpringBoot

SpringBoot可结合Jetty,Undertow。实现

HTTP/2 客户端实现

OkHttp

官网: https://github.com/square/okhttp
适用于Android和Java应用程序的HTTP和HTTP/2客户端。

使用

  1. 启用http/2支持
    • 应用层协议协商(ALPN)是SSL协议的扩展,有助于更快速地建立HTTPS连接。它与HTTP / 2一起定义,HTTP / 2使用ALPN创建HTTPS连接。
    • Java 7和Java 8中的当前实现不支持ALPN。
    • Jetty项目为sun.security.ssl提供了一个ALPN支持的库。由于SSL实现是Java运行时的一部分,因此Jetty的ALPN JAR不能简单地放入CLASSPATH中,Java必须使用如下参数启动以覆盖Java的启动类路径。 -Xbootclasspath/p:<path-to-alpn-boot-VERSION.jar>
    • OpenJDK版本和相应版本的ALPN对应关系。见表15.1 http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html
    • ALPN JAR的二进制版本下载地址。http://repo1.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/

测试http/2的一个例子(2015年)

使用一个TCP连接,测试http/2的多路复用。地址: https://github.com/fstab/http2-examples/tree/master/multiplexing-examples

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值