测试机配置HTTP2

Posted 技术圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试机配置HTTP2相关的知识,希望对你有一定的参考价值。


编译安装nginx

需安装上http2模块,指定ssl加密路径

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-stream=dynamic --with-http_v2_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.1.0f

make
make install

配置nginx支持https

这里是用的本地自己的ssl加密,也可以申请免费的let's encrypt证书 1.使用openssl生成密钥privkey.pem:

openssl genrsa -out privkey.pem 1024/2038

2.使用密钥生成证书server.pem:

openssl req -new -x509 -key privkey.pem -out server.pem -days 365

证书信息可以随便填,但是Common Name要根据你本机测试的域名填写。

例如:

Common Name (e.g. server FQDN or YOUR name) []: test.com

也可以通过*.yourdomain.com来匹配你的二级域名

配置nginx

server {
listen 443;
server_name youdomain.com;

ssl on;
ssl_certificate /path/to/server.pem;
ssl_certificate_key /path/to/privkey.pem;
...
}

验证配置,重启nginx

$ sudo nginx -s reload

测试请求

curl --cacert server.pem https://youdomain.com

配置nginx支持http2

server配置

server {
listen 443 ssl http2;
server_name ssl.test.com;
root /path/to/web;
#ssl on;
ssl_certificate /usr/local/nginx/server.pem;
ssl_certificate_key /usr/local/nginx/privkey.pem;

access_log /data/logs/nginx/ssl.access.log;
error_log /data/logs/nginx/ssl.error.log;
index index.php index.html index.shtml;
add_header Load-Balancing NCUC-117;

include conf.d/\*.fifter;

location / {
index index.php index.html index.htm;
if (!-e $request_filename)
{
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}

判断是否使用http2
在console中执行如下代码

(function(){
// 保证这个方法只在支持loadTimeschrome浏览器下执行
if(window.chrome && typeof chrome.loadTimes === 'function') {
var loadTimes = window.chrome.loadTimes();
var spdy = loadTimes.wasFetchedViaSpdy;
var info = loadTimes.npnNegotiatedProtocol || loadTimes.connectionInfo;
// 就以 h2」作为判断标识
if(spdy && /^h2/i.test(info)) {
return console.info('本站点使用了HTTP/2');
}
}
console.warn('本站点没有使用HTTP/2');
})();

总结
升级http2
1.需要配置nginx支持https
2.需要配置nginx支持http2模块

以上是关于测试机配置HTTP2的主要内容,如果未能解决你的问题,请参考以下文章

MAMP Pro 中的 HTTP2 支持

HTTP2 / SPDY 推流验证:如何测试?

续:Grpc over http2 PK WebApi over http2

nginx配置支持http2

GRPC 服务器上的 JMeter 测试:服务器端异常:io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception

Nginx 1.10 上的 SPDY 代替 HTTP2