参考链接: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
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
、在浏览器中输入: