测试机配置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(){
// 保证这个方法只在支持loadTimes的chrome浏览器下执行
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的主要内容,如果未能解决你的问题,请参考以下文章
续:Grpc over http2 PK WebApi over http2
GRPC 服务器上的 JMeter 测试:服务器端异常:io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception