个人网站提升为HTTP2.0协议,加速访问

一、条件

1、openssl的版本必须在1.0.2e及以上

2、nginx的版本必须在1.9.5以上

二、编译安装

1、openssl 编译安装

(1)开始

wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar zxvf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config shared zlib
make && make install
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v

注:

(2)查看openssl版本

www@TinywanAliYun: openssl version
OpenSSL 1.0.2j Sep

232

2、重新编译Openresty

(1)本次将下载最新版本:openresty-1.13.6.1.tar.gz

wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
tar zxvf openresty-1.13.6.1.tar.gz
cd openresty-1.13.6.1/

(2)修改加载openssl 方式

vim /home/www/build/openresty-1.13.6.1/bundle/nginx-1.13./auto/lib/openssl/conf
vim /home/www/build/openresty-1.13.6.1/build/nginx-1.13./auto/lib/openssl/conf

修改后内容,注意:这里是修改为两个不同目录的openssl的配置文件

# 修改前:
#CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
#CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
#CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
#CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a" # 修改前:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

我这里是直接注释掉,添加新的

(3)重新编译Openresty ,添加–with-openssl参数

./configure \
--user=www \
--group=www \
--prefix=/usr/local/openresty \
--with-luajit \
--with-http_v2_module \
--with-http_realip_module \
--with-http_mp4_module \
--with-stream \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-openssl=/usr/local/ssl \
--with-openssl-opt="enable-tlsext" \
--without-http_redis2_module \
--with-http_iconv_module \
--with-http_stub_status_module \
--with-http_xslt_module \
--add-dynamic-module=/home/www/build/nginx-ts-module \
--add-dynamic-module=/home/www/build/nginx-rtmp-module \
--add-dynamic-module=/home/www/build/nginx-module-vts \
--add-module=/home/www/build/ngx_cache_purge-2.3 \
...
...
make

注意:这里只要编译就可以啦,没必要make install (会覆盖原来已经安装好的内容)

(4)修改Nginx 二进制文件,如果Nginx服务正在运行,必须停止,否则无法覆盖

首先备份二进制文件一份:

cp /usr/local/openresty/nginx/sbin/nginx /usr/local/openresty/nginx/sbin/nginx.old

覆盖旧二进制文件

cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13./objs/nginx  /usr/local/openresty/nginx/sbin/nginx

如果动态编译了其他模块或者同一个模块的不同版本,则同上一并复制过去

cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13./objs/ngx_rtmp_module.so /usr/local/openresty/nginx/modules/ngx_rtmp_module.so

cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13./objs/ngx_http_ts_module.so /usr/local/openresty/nginx/modules/ngx_http_ts_module.so

cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13./objs/ngx_http_vhost_traffic_status_module.so /usr/local/openresty/nginx/modules/ngx_http_vhost_traffic_status_module.so

(5)重启服务,查看配置信息

sudo systemctl start nginx

配置详情

www@TinywanAliYun:~/build/openresty-1.13.6.1/build/nginx-1.13./objs$ sudo /usr/local/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.13.6.1
built by gcc 5.4. (Ubuntu 5.4.-6ubuntu1~16.04.)
built with OpenSSL 1.0.2j Sep
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.
--with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --user=www --group=www --with-http_v2_module --with-http_realip_module
--with-http_mp4_module --with-stream --with-http_ssl_module --with-openssl=/usr/local/ssl
--with-openssl-opt=enable-tlsext --with-http_stub_status_module --with-http_xslt_module
--add-dynamic-module=/home/www/build/nginx-ts-module --add-dynamic-module=/home/www/build/nginx-rtmp-module
--add-dynamic-module=/home/www/build/nginx-module-vts
--add-dynamic-module=/home/www/build/ngx_cache_purge-2.3
--with-stream --with-stream_ssl_module --user=www --group=www --with-http_v2_module
--with-http_ssl_module --with-openssl=/usr/local/ssl --with-openssl-opt=enable-tlsext --with-http_stub_status_module --with-http_xslt_module
--add-dynamic-module=/home/www/build/nginx-ts-module
--add-dynamic-module=/home/www/build/nginx-rtmp-module
--add-dynamic-module=/home/www/build/nginx-module-vts
--add-dynamic-module=/home/www/build/ngx_cache_purge-2.3
--with-stream --with-stream_ssl_module

三、配置Nginx.conf

    server {
listen ssl http2;
server_name www.tinywan.com;
set $root_path /home/www;
root $root_path; ssl on;
ssl_certificate /etc/letsencrypt/live/www.tinywan.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.tinywan.com//privkey.pem;
server_tokens off; location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$ last;
break;
}
}
}

四、测试

1、测试工具,Chrome 的 Net-internals 工具 (Chrome 中通过 chrome://net-internals/#http2 可以访问)

2、测试结果

浏览器Header 请求头变化

五、参考文章

1、HTTP 2.0 详细介绍

3、HTTP协议简介

4、nginx的http2.0性能太逆天了,HTTPS网站性能优化

5、http2.0与http1.X的区别

6、面试时如何优雅的谈论HTTP/1.0/1.1/2.0

7、HTTP/2.0与HTTP/1.1协议区别

8、nginx配置http2无效不起作用

9、[翻译]Dropbox Web 服务启用 HTTP/2:经验和观察

10、如何启用curl命令HTTP2支持

Nginx 学习笔记(二)Web 服务启用 HTTP/2的更多相关文章

  1. Netty学习笔记(二) 实现服务端和客户端

    在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...

  2. nginx学习笔记二

    一,nginx架构在Linux系统中以daemon(守护进程)的方式在后台运行,后台进程包含一个master进程和多个worker进程(多进程的工作方式) master进程 | 信号 | | ---- ...

  3. Nginx学习笔记二基本配置

    1.Nginx的配置文件默认在Nginx程序安装目录的conf二级目录下,主配置文件为nginx.conf.假设您的Nginx安装 在/usr/local/webserver/nginx/目录下,那么 ...

  4. nginx学习笔记(二)

    nginx变量 Nginx 变量值容器的生命期是与当前正在处理的请求绑定的,而与 location 无关. 通过 set 指令隐式创建的 Nginx 变量.这些变量我们一般称为"用户自定义变 ...

  5. dubbo学习笔记二(服务调用)

    项目结构 代码示例 由于之前的IEchoService 的一个方法只是在服务端控制台打印,不便在浏览器测试,所以新添加的方法 api和服务端代码变更 public interface IEchoSer ...

  6. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  7. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  8. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  9. nginx 学习笔记(2) nginx新手入门

    这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...

随机推荐

  1. Activiti中子流程:SubProcess,CallActiviti的区别

    子流程:SubProcess,CallActiviti的区别 https://community.alfresco.com/thread/221771-call-activiti-vs-subproc ...

  2. Eclipse:An internal error occurred during: "Building workspace". GC overhead limit exceeded

    http://blog.csdn.net/shaozhang872196/article/details/18552273 http://www.cnblogs.com/sonofelice/p/52 ...

  3. 携程Apollo配置中心架构深度剖析

    转自:http://www.uml.org.cn/wfw/201808153.asp 一.介绍 Apollo(阿波罗)[参考附录]是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在 ...

  4. python模块_pcharm导入包的问题

    1.添加pip包 2.导入项目需要由内置包(library root)

  5. hive外部表

    创建外部表.数据从HDFS获取  只是建立了链接,hdfs中的数据丢失,表中数据也丢失;hdfs数据增加,表中数据也增加 上传文件 创建外部表 删除文件 执行查询语句,发现少了

  6. hive启动方式

  7. Test Scenarios for sending emails

    (test cases for composing or validating emails are not included)(make sure to use dummy email addres ...

  8. delphi dbgrid 修改、更新、删除

    https://zhidao.baidu.com/question/580946797.html DELPHI 中,使用 dbgrid显示数据.窗体上放置三个按钮,caption分别为:修改.删除.更 ...

  9. Rob Pike 编程五原则

    Rob Pike's 5 Rules of Programming Rule 1: You can't tell where a program is going to spend its time. ...

  10. BZOJ5206 JSOI2017原力(三元环计数)

    首先将完全相同的边的权值累加.考虑这样一种trick:给边确定一个方向,由度数小的连向度数大的,若度数相同则由编号小的连向编号大的.这样显然会得到一个DAG.那么原图的三元环中就一定有且仅有一个点有两 ...