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 ...
随机推荐
- LINUX的STRACE命令用法 [转]
调用:strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -u ...
- [转] HTML5之FileReader的使用
HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...
- POJ - 2115C Looooops 扩展欧几里得(做的少了无法一眼看出)
题目大意&&分析: for (variable = A; variable != B; variable += C) statement;这个循环式子表示a+c*n(n为整数)==b是 ...
- windows下mysql配置
windows下mysql配置 忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article ...
- ajax和302(转)
原文:http://www.cnblogs.com/dudu/p/ajax_302_found.html 在ajax请求中,如果服务器端的响应是302 Found,在ajax的回调函数中能够获取这个状 ...
- 模拟app端上传图片
使用插件模块管理模式: jsp页面: <sys:fileUpload fieldName="picList" contentId="true" value ...
- 踩过无数坑实现的哈夫曼压缩(JAVA)
最近可能又是闲着没事干了,就想做点东西,想着还没用JAVA弄过数据结构,之前搞过算法,就试着写写哈夫曼压缩了. 本以为半天就能写出来,结果,踩了无数坑,花了整整两天时间!!orz...不过这次踩坑,算 ...
- [代码审计]yxcms从伪xss到getshell
0x00 前言 这篇文章首发于圈子,这里作为记录一下. 整个利用链构造下来是比较有趣的,但实际渗透中遇到的几率比较少. 此次审的是yxcms 1.4.6版本,应该是最后一个版本了吧? 0x01 从任意 ...
- Eclipse设置之:代码注释/server 控制台输出乱码解决
1 Eclipse设置 Configure clean up style The location is here: And the configuration should fo ...
- Java虚拟机工作原理简介
1. Java 文件执行过程 2. 运行数据区域 Runtime Data Areas:当运行一个JVM示例时,系统将分配给它一块内存区域(这块内存区域的大小可以设置的),这一内存区域由JVM自己来管 ...