Nginx 学习笔记(二)Web 服务启用 HTTP/2
2017-11-19 19:13
716 查看
个人网站提升为HTTP2.0协议,加速访问
一、条件
1、openssl的版本必须在1.0.2e及以上
2、nginx的版本必须在1.9.5以上
二、编译安装
1、openssl 编译安装
(1)开始
注:
(2)查看openssl版本
232
2、重新编译Openresty
(1)本次将下载最新版本:openresty-1.13.6.1.tar.gz
(2)修改加载openssl 方式
修改后内容,注意:这里是修改为两个不同目录的openssl的配置文件
我这里是直接注释掉,添加新的
(3)重新编译Openresty ,添加–with-openssl参数
注意:这里只要编译就可以啦,没必要make install (会覆盖原来已经安装好的内容)
(4)修改Nginx 二进制文件,如果Nginx服务正在运行,必须停止,否则无法覆盖
首先备份二进制文件一份:
覆盖旧二进制文件
如果动态编译了其他模块或者同一个模块的不同版本,则同上一并复制过去
(5)重启服务,查看配置信息
配置详情
三、配置Nginx.conf
四、测试
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支持
一、条件
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 26 Sep 2016
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.6/auto/lib/openssl/conf vim /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/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.6/objs/nginx /usr/local/openresty/nginx/sbin/nginx
如果动态编译了其他模块或者同一个模块的不同版本,则同上一并复制过去
cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/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.6/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.6/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.6/objs$ sudo /usr/local/openresty/nginx/sbin/nginx -V nginx version: openresty/1.13.6.1 built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) built with OpenSSL 1.0.2j 26 Sep 2016 TLS SNI support enabled configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.0 --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 443 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=/$1 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支持
相关文章推荐
- linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)、网页内容访问、安全Web服务、动态网站的部署
- Web服务及http协议_学习笔记
- JavaWeb学习笔记之tomcat与web程序结构与Http协议
- Python学习笔记-实现探测Web服务质量
- Netty4 学习笔记之四: Netty HTTP服务的实现
- Nginx学习笔记---HTTP模块调用
- SilverLight学习笔记--Web 服务
- 【WEB服务精髓学习笔记一】WEB服务简介
- C#学习笔记之六(stream, Asynchronous data read, HttpWebRequest
- WebService学习笔记-读取webxml.com.cn的天气服务信息
- .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别
- Linux学习笔记:REHL AS4的上网配置,Http服务安装及配置,ftp服务的安装及配置
- dubbo学习笔记3 SpringMvc框架web形式 dubbo服务搭建 消费者
- python学习笔记-基于flask的web服务提供
- web 学习笔记9-HTTP响应头字段的详解
- Java Web 学习笔记之三: HttpURLConnection 模拟表单上传文件
- 关于”System.ServiceModel.Activation.WebServiceHostFactory“与"<webHttp/>"以及RestFul/启用了Ajax的WCF服务
- Python之学习笔记(web服务)
- Mysql DBA 高级运维学习笔记-Heartbeat实现web服务的高可用案例及维护要点
- Webservice学习笔记二,使用Axis发布简单的Web服务