配置

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。