配置
nginx要配置使用http2.0,方法也很简单,在nginx配置文件的server
模块的listen
里,加入http2
即可使用http2.0。示例如下:
server {
listen 443 ssl http2;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}
配置完后,需要运行nginx -t
检查配置文件。如果没安装支持http2.0模块,就会出现以下提示:
[root@localhost nginx]# ./sbin/nginx -t
nginx: [emerg] the "http2" parameter requires ngx_http_v2_module in /usr/local/nginx/conf/vhost/www.conf:10
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
提示没有安装ngx_http_v2_module模块。
nginx想要支持http2.0,可以通过nginx -V
命令来查看是否有编译安装--with-http_v2_module
模块:
[root@localhost nginx]# ./sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
比如这里就没安装。
安装步骤
1.编译
进入到nginx源码目录重新编译,通过--with-http_v2_module
启用ngx_http_v2_module模块,然后make (注意不要make install,否则直接覆盖)
[root@localhost ~]# cd /root/nginx-1.16.1/ # nginx源码版本必须和当前生产环境的nginx一致
[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
[root@localhost nginx-1.16.1]# make
2. 替换二进制文件
meke好了之后会在源码目录下的objs目录产生nginx的二进制,不要make install(make是把源码编译成可执行的二进制,make install是把编译好的二进制或一些文件安装到指定的路径)。
[root@localhost nginx-1.16.1]# cd objs/
[root@localhost objs]# ls
autoconf.err Makefile nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
然后把原先的nginx二进制命令备份,用上面编译好的nginx替换,最后reload的nignx就可以。
[root@localhost ~]# cd /usr/local/nginx/sbin
[root@localhost sbin]# mv nginx nginx.bak # 备份
[root@localhost sbin]# cp /root/nginx-1.16.1/objs/nginx . # 把编译好的nginx拷贝过来
[root@localhost sbin]# ./nginx -s reload # 重载nginx
3. 查看版本
再通过nginx -V
测试,可以看到--with-http_v2_module
,说明ok了
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
至此配置完成,nginx正常支持http2.0。