nginx启用HTTP2特性
3 |
nginx version: nginx/1.9.15 |
4 |
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) |
5 |
built with OpenSSL 1.0.2g 1 Mar 2016 |
6 |
TLS SNI support enabled |
7 |
configure arguments: --prefix=/home/jackie/software/nginx --with-openssl=/home/jackie/Downloads/nginx/openssl-1.0.2g --with-pcre=/home/jackie/Downloads/nginx/pcre-8.38 --with-zlib=/home/jackie/Downloads/nginx/zlib-1.2.8 --with-http_ssl_module --with-threads --with-debug |
启用http2支持
- 修改编译选项
在configure的选项中加入--with-http_v2_module,由于HTTP2需要SSL的支持,因此如缺少--with-http_ssl_module选项,还需要加入--with-http_ssl_module。 如下:
./configure --prefix=/home/jackie/software/nginx \
--with-openssl=/home/jackie/Downloads/nginx/openssl-1.0.2g \
--with-pcre=/home/jackie/Downloads/nginx/pcre-8.38 \
--with-zlib=/home/jackie/Downloads/nginx/zlib-1.2.8 \
--with-http_ssl_module \
--with-threads \
--with-debug \
--with-http_v2_module
- 编译&升级
make & make install
- 修改配置文件,启用HTTP2,如下:
server {
listen 8443 ssl http2 default_server; # 增加 http2 default_server
server_name 192.168.0.107;
...
}
- 验证配置文件
#./nginx -t
nginx: the configuration file /home/jackie/software/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /home/jackie/software/nginx/conf/nginx.conf test is successful
- 启动nginx
#./nginx
验证HTTP2是否已启用
方法一
使用高版本如56.0.2924.87的Chrome,按照如下步骤操作
- 使用Chrome访问启用http2的站点,比如Jackie的环境为https://192.168.0.107:8443。
- 新开TAB页,在地址栏中输入
chrome://net-internals/#http2,检查HTTP/2 sessions下的表格。
- 确认表格里是否出现了上一步访问的主机地址,比如192.168.0.107:8443。
方法二
使用curl命令,参考HTTP/2 with curl,执行如下命令,确认站点返回的协议是否为HTTP
curl --http2 -I 192.168.0.107:8443
如执行上述命令时遇到如下错误,说明系统当前安装的curl还不支持HTTP2协议。
curl https://192.168.0.107:8443/ --http2
curl: (1) Unsupported protocol
可以执行如下命令,检查系统当前安装的curl支持的特性列表,确认是否包含HTTP2。
curl -V
curl 7.47.0 (i686-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
从前述输出信息可以了解到,当前安装的curl还不支持HTTP2。
这时可参考如何启用curl命令HTTP2支持重新编译curl,加入HTTP2的支持。
方法三
安装Chrome插件HTTP/2 and SPDY indicator,安装完毕后访问启用HTTP2的站点,如果地址栏出现蓝色的闪电,说明站点已启用HTTP2。
不过Jackie身在墙内,安装总是失败,所以没有验证该方法的有效性。
完整的配置文件
如下是完整的配置文件,删除了一些与HTTP2特性不相关的内容。
02 |
error_log logs/error.log debug; |
05 |
worker_connections 1024; |
10 |
default_type application/octet-stream; |
13 |
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
14 |
'$status $body_bytes_sent "$http_referer" ' |
15 |
'"$http_user_agent" "$http_x_forwarded_for"'; |
17 |
access_log logs/access.log main; |
27 |
server_name 192.168.0.107; |
29 |
return https://$server_name:8443$request_uri; |
34 |
listen 8443 ssl http2 default_server; |
35 |
server_name 192.168.0.107; |
37 |
ssl_certificate /home/jackie/software/nginx_conf/server.crt; |
38 |
ssl_certificate_key /home/jackie/software/nginx_conf/server.key; |
40 |
ssl_session_cache shared:SSL:1m; |
41 |
ssl_session_timeout 5m; |
43 |
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA'; |
44 |
ssl_prefer_server_ciphers on; |
46 |
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" always; |
47 |
add_header X-Frame-Options SAMEORIGIN always; |
48 |
add_header X-XSS-Protection "1; mode=block" always; |
49 |
add_header X-Content-Type-Options nosniff; |
53 |
proxy_pass http://127.0.0.1:18080; |
54 |
proxy_set_header referer ''; |
58 |
#error_page 404 /404.html; |
60 |
# redirect server error pages to the static page /50x.html |
62 |
error_page 500 502 503 504 /50x.html; |
63 |
location = /50x.html { |
- http2 技术整理 nginx 搭建 http2 wireshark 抓包分析 server push 服务端推送
使用 nginx 搭建一个 http2 的站点,准备所需: 1,域名 .com .net 均可(国内域名需要 icp 备案) 2,云主机一个,可以自由的安装配置软件的服务器 3,https 证书 ht ...
- centos7.0 64位系统 安装PHP 支持 nginx
1 安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...
- nginx使用ssl模块配置HTTPS支持
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这 ...
- CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问
参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问 ...
- Nginx下配置SSL模块,支持https
Http与Https的区别 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效 ...
- centos7.0 64位系统 安装PHP5.3 支持 nginx
1 安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...
- NGINX 添加MP4、FLV视频支持模块
由于公司网站需要放置视频,但是默认的服务器环境是没有编译这个支持的模块,视频文件只能缓冲完了在播放,非常麻烦. 之前呢也安装了一个nginx_mod_h264_streaming来支持,效果很不错 ...
- nginx使用ssl模块配置HTTPS支持 <转>
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这 ...
- 配置keepalived支持nginx高可用
实验环境 序号 主机名 IP地址 1 nginx1 192.168.204.11 2 nginx2 192.168.204.12 安装nginx 安装nginx yum install -y epel ...
随机推荐
- python实战之原生爬虫(爬取熊猫主播排行榜)
""" this is a module,多行注释 """ import re from urllib import request # B ...
- MyISAM引擎和InnoDB引擎的特点
随着MySQL的不断更新,由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景,朋友们可以根据业务需求,选择合适的存储引擎.^.^ MyISAM 特性 不支持 ...
- react 的JSX语法需要注意哪些点?
注释方式 ReactDOM.render( <div> {/*JSX 中的注释方式*/} </div>, document.getElementById('root') ) j ...
- norbert-构建服务器集群感知的 Java 应用程序
http://www.ibm.com/developerworks/cn/java/j-zookeeper/index.html
- Angular 2的表格控件
Angular 2的表格控件 前端框架一直这最近几年特别火的一个话题,尤其是Angular 2拥有众多的粉丝.在2016年9月份Angular 2正式发布之后,大量的粉丝的开始投入到了Angular ...
- 019 jquery中的动画
1.隐藏和显示 2.透明度与高度 3.可见性 4.程序一(show与hide加入参数实现动画) <!DOCTYPE html> <html> <head> < ...
- 010.Zabbix的zatree插件安装
一 zatree简介 zatree 是来自国内58公司开发的监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. 二 安装前准备 2.1 ...
- ArduinoYun教程之ArduinoYun硬件介绍
ArduinoYun教程之ArduinoYun硬件介绍 ArduinoYun的电源插座 Arduino Yun有两排插座,这些插座可以按类型分为三类:电源.数字IO和模拟输入.电源部分主要集中在如图1 ...
- JavaScript中的Map、Set及其遍历
Map Map是一组键值对的结构,具有极快的查找速度. Map的定义. //空map设值key-value var m = new Map(); m.set("XiaoMing", ...
- Ⅳ.Catalan数
Catalan数首先是由Euler在精确计算对凸n边形的不同的对角三角形剖分的个数问题时得到的,它经常出现在组合计数问题中. 问题的提出:在一个凸n边形中,通过不相交于n边形内部的对角线,把n ...