2019独角兽企业重金招聘Python工程师标准>>>
最近 需要用到 ngx_http_sub_module 来解决局域网边界的问题,但是只有一台Windows服务器可用,所以研究一下怎样在 Windows下添加 ngx_http_sub_module。
首先下载 Nginx 源码 ,需要先安装Mercurial 具体方法可以看 Nginx 官网教程 http://nginx.org/en/docs/howto_build_on_win32.html。
安装完 Mercurial 使用下面命令活动 Nginx 源码。
hg clone http://hg.nginx.org/nginx
安装 MSYS ,启动msys.bat并cd到nginx源码目录下执行:
./auto/configure -–prefix=”c:/nginx” -–with-cc-opt=”-D FD_SETSIZE=4096 -D __NO_MINGW_LFS -D __WATCOMC__” -–with-http_stub_status_module -–with-http_sub_module -–without-http_rewrite_module -–without-http_gzip_module
–prefix=”c:/nginx”是Nginx的安装目录,注意一定要写路径中的斜杠,一定要是“/”
-D FD_SETSIZE=4096是为了避免出现运行时的错误提示
-D __NO_MINGW_LFS是为了避免编译时出现ssize_t、off_t类型错误
-D __WATCOMC__是为了避免编译时出现Nginx shmtx错误
为了方便,采用–without-http_rewrite_module、–without-http_gzip_module避免Nginx依赖于其他库
执行完毕之后在objs目录下会生成一堆文件,其中Makefile就是我们生成的编译批处理文件了。
修改Makefile 的第一行:
CC= cc 改为 CC= gcc
在objs/Makefile中查找advapi32.lib、ws2_32.lib,并补全路径,改为:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\advapi32.lib"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\ws2_32.lib"
接下来继续执行命令:
make -f objs/Makefile
完成后执行:
make install
此时Nginx便安装到了C:/nginx目录下。