💩 需求
生产环境的nginx当初没有编译启用ngx_http_v2_module模块,因此网站不能启用http2.0协议,需要重新启用一下。
现在有两个目录,分别是nginx的源码目录和nginx的安装目录,如图所示:
🚽 操作流程
- 获取安装目录中的nginx都已经启用了哪些模块;
- 在源码目录中重新编译nginx,编译时要添加已启用的模块和ngx_http_v2_module模块;
- 将编译生成的nginx文件,拷贝到安装目录中,覆盖原有的nginx文件;
- 重启,大功告成;
源码目录和安装目录的版本必须一致!!!
🪠 开始实战
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;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。