nginx自定义http_hls模块及windows下x64编译

参考链接:https://zhuanlan.zhihu.com/p/50462530

https://blog.csdn.net/u010505059/article/details/92661913

一、自定义hls模块说明

自定义模块位置:/nginx/src/ext/http_hls

http_hls /

├── config

└── ngx_http_ hls_module.c

  • 添加config文件
  • 添加ngx_http_ hls _modul.c文件
  • 修改nginx.conf文件

# config

ngx_addon_name=ngx_http_hls_module

HTTP_MODULES="$HTTP_MODULES ngx_http_ hls_module"

NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hls_module.c"

# modify nginx.conf
location / {
           hls;
           #root   html;
           #index  index.html index.htm;
}

二、windows编译64位nginx

1安装 Visual Studio 2015

安装时请勾选,图下所示

 

2、安装 msys2:

官网: https://www.msys2.org/ ,国内下载可能慢

清华的镜像地址:https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/

中国科学技术大学的镜像地址:https://mirrors.ustc.edu.cn/msys2/distrib/

3、下载 PCRE:(pcre-8.43.zip)

链接:http://www.pcre.org/

4、下载 zlib:(zlib-1.2.11.tar)

链接:http://zlib.net/

5、下载 OpenSSL: (openssl-1.0.1u.tar.gz)

链接:https://www.openssl.org/ 要使用1.0.xx版本的,1.1的版本编译不过的。(网友说的)

6、下载nginx源码(版本1.15.12,最新版缺少一些文件编译不过,没做深究)

链接: http://hg.nginx.org/nginx/

 

 

7.Nginx依赖模块

在nginx源码目录下,新建文件夹objs,lib。解压pcre-8.43,zlib-1.2.11,openssl-1.0.1u并改名为pcre,zlib,openssl
目录结构如下:

 

8、配置nginx生成Makefile文件

64位编译修改(32位编译忽略),打开nginx\auto\lib\openssl\makefile.msvc文件。找到“VC-WIN32”替换为“VC-WIN64A”;

“if exist ms\do_ms.bat”替换为“if exist ms\do_win64a.bat”;

“ms\do_ms”替换为“ms\do_win64a”。

9、由于Nignx没有提供相关配置项改变缺省banner,所以我们需要改变源码,然后重编译和重新安装一下,具体操作:

找到/nginx/src/http/ngx_http_header_filter_module.c文件(我的nginx的安装目录为/nginx),修改以下变量的声明:

static u_char ngx_http_server_string[] = "Server: nginx" CRLF;

static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;      

 修改为:

static u_char ngx_http_server_string[] = "Server: " CRLF;

static u_char ngx_http_server_full_string[] = "Server:  " CRLF;

static u_char ngx_http_server_build_string[] = "Server: " CRLF;

10、启动 msys2.exe 并 cd 到 nginx源码目录下

auto/configure --with-cc=cl --builddir=objs --prefix= \

--conf-path=conf/nginx.conf --pid-path=logs/nginx.pid \

--http-log-path=logs/access.log --error-log-path=logs/error.log \

--sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp \

--http-proxy-temp-path=temp/proxy_temp \

--http-fastcgi-temp-path=temp/fastcgi_temp \

--http-scgi-temp-path=temp/scgi_temp \

--http-uwsgi-temp-path=temp/uwsgi_temp \

--with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre \

--with-zlib=objs/lib/zlib --with-openssl=objs/lib/openssl \

--with-select_module --with-http_ssl_module \

--add-module=自己的绝对路径(相对路径行不通,暂未找到原因)/nginx_build/nginx/src/ext/http_hls

 

(这里会发现有一个异样的提示,auto/cc/msvc: line 117: [: : integer expression expected ,只要修改文件 $nginx源码目录\auto\cc\msvc 即可,在 echo " + cl version: $NGX_MSVC_VER" 的前面加入一行 NGX_MSVC_VER=15.00 ,当然不修改也不会影响后续的编译。 )

以上操作将在build目录下会生成一堆文件,其中Makefile就是我们生成的编译批处理文件了。

11、 编译nginx

以下操作,在编译过程中代码会引用到很多系统自带库,所以我们需要用visual studio 的命令行工具来执行;

切换到nginx源码目录下,然后

nmake -f objs/Makefile

在编译时最后提示找不到引用sed,但是不用管它,我们nginx.exe已经编译成功了。

11.运行nginx

a) 把objs\nginx.exe拷贝到上一级目录
b) 创建文件夹logs、temp、html
c) 启动nginx.exe

12.删除多余文件

nginx目录下可删剩下图所示

13、Nginx常用命令

1)、检查配置文件是否配置成功,在启动服务之前执行;

nginx –t

2)、启动运行nginx服务;

start nginx

3)、等任务完成之后,关闭Nginx服务;

nginx -s quit

4)、强制关闭Nginx服务;

nginx -s stop

5)、重启Nginx服务,一般是修改了配置文件之后,使修改生效;

nginx -s reload

三、运行结果

1、启动nginx

 

2、在浏览器中输入:

http://127.0.0.1/cgmedia/hls/getstream/addr=live/34020000001320000001@192.168.1.65_5060/34020000001320000001@192.168.1.65_5060.m3u8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值