头图

💩 需求

生产环境的nginx当初没有编译启用ngx_http_v2_module模块,因此网站不能启用http2.0协议,需要重新启用一下。

现在有两个目录,分别是nginx的源码目录和nginx的安装目录,如图所示:

🚽 操作流程

  1. 获取安装目录中的nginx都已经启用了哪些模块;
  2. 在源码目录中重新编译nginx,编译时要添加已启用的模块和ngx_http_v2_module模块;
  3. 将编译生成的nginx文件,拷贝到安装目录中,覆盖原有的nginx文件;
  4. 重启,大功告成;

源码目录和安装目录的版本必须一致!!!

🪠 开始实战

1. 获取已启用的模块

进入到安装目录:

cd /usr/local/nginx/sbin

获取已启用的模块:(-V是大写的)

./nginx -V

结果如下:

2. 重新编译nginx

进入到nginx源码目录重新编译,通过--with-http_v2_module启用ngx_http_v2_module模块,然后make (注意不要make install,否则直接覆盖了)。

进入到源码目录:

cd /usr/local/nginx-1.18.0

配置编译文件,包括已启用的模块和ngx_http_v2_module模块:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module

编译一下:(注意不要make install,否则直接覆盖了)

make

编译后的文件生成在源码目录的objs目录下,如图所示:

3. 覆盖原有的nginx文件

先备份一下安装目录中的nginx文件

cd /usr/local/nginx/sbin
mv nginx nginx.bak

将编译后的nginx文件拷贝到安装目录中

cp /usr/local/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin

./nginx -V命令查看已启用的模块,可以看到--with-http_v2_module模块,如图所示:

4. 重启nginx

./nginx -s stop
./nginx

其它模块的启用也是类似的。顺便说下make和make install, make是把源码编译成可执行的二进制,make install是把编译好的二进制或一些文件安装到指定的路径。

5. 修改nginx.conf文件,添加http2.0协议

请注意,HTTP/2.0协议需要使用SSL加密。如果您的网站不使用SSL加密,则无法使用HTTP/2.0协议。

文件位置:

添加协议,如图所示:

listen       443 ssl http2;


BigDipper
17 声望0 粉丝