要在Windows上使用MinGW编译包含心跳检测模块的Nginx可执行文件(nginx.exe),您需要下载和配置Nginx源代码和所需模块源代码,并使用MinGW进行编译。以下是详细步骤:
1:准备编译环境
-
安装MinGW:
- 下载并安装MinGW,确保安装
gcc
,g++
,make
, 和其他必要的开发工具。
- 下载并安装MinGW,确保安装
-
安装nmake:
- nmake是Microsoft的make工具,通常随Visual Studio一起安装。如果没有Visual Studio,可以从Microsoft官方资源下载独立的nmake工具。
-
下载Nginx源代码:
- 从nginx/branches下载与您当前使用的Nginx版本匹配的源代码包。
- 从nginx/branches下载与您当前使用的Nginx版本匹配的源代码包。
-
下载心跳检测模块源代码:
- 从nginx_upstream_check_module下载心跳检测模块的源代码。
2:解压和准备源代码
-
解压源代码:
- 将Nginx源代码和心跳检测模块源代码解压到同一个目录。例如,创建一个目录
C:\nginx_build
,然后解压到该目录中。
- 将Nginx源代码和心跳检测模块源代码解压到同一个目录。例如,创建一个目录
-
结构示例:
C:\nginx_build ├── nginx-1.20.0 └── openssl-3.3.0.tar.gz └── pcre2-10.37.tar.gz └── zlib-1.3.1.tar.gz └── nginx_upstream_check_module
3:配置和编译Nginx
-
打开MinGW终端:
- 打开MinGW终端(msys),并导航到Nginx源代码目录。例如:
cd /c/nginx_build/nginx-1.20.0
- 打开MinGW终端(msys),并导航到Nginx源代码目录。例如:
-
准备依赖库
- 创建 build 和 lib 目录,并将 zlib、PCRE 和 OpenSSL 库源解压到 lib 目录中
mkdir objs mkdir objs/lib mv pcre2-10.37.tar.gz objs/lib mv zlib-1.3.1.tar.gz objs/lib mv openssl-3.3.0.tar.gz objs/lib cd objs/lib tar -xzf pcre2-10.37.tar.gz tar -xzf zlib-1.3.1.tar.gz tar -xzf openssl-3.3.0.tar.gz
- 创建 build 和 lib 目录,并将 zlib、PCRE 和 OpenSSL 库源解压到 lib 目录中
-
应用补丁(如果需要):
- 有些第三方模块可能需要对Nginx源代码进行补丁处理。检查模块的文档,看看是否需要应用补丁。
- 示例补丁命令:
patch -p1 < /c/nginx_build/nginx_upstream_check_module/check_1.20.1+.patch
-
配置Nginx:
-
运行
configure
脚本,指定心跳检测模块:auto/configure --with-cc=cl --with-debug --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/pcre2-10.37 --with-zlib=objs/lib/zlib-1.3.1 --with-openssl=objs/lib/openssl-3.3.0 --with-openssl-opt=no-asm --with-http_ssl_module --add-module=../nginx_upstream_check_module
-
命令行执行成功效果图:
-
-
编译Nginx:
- 使用nmake编译Nginx,以管理员身份运行“x86 Native Tools Command Prompt for VS 2022”:
cd C:\nginx_build\nginx-1.20.0 nmake
- 使用nmake编译Nginx,以管理员身份运行“x86 Native Tools Command Prompt for VS 2022”:
4:安装和验证Nginx
-
安装Nginx:
- 在Windows上没有标准的安装路径。您可以将编译生成的Nginx二进制文件和相关文件复制到目标目录,例如
C:\nginx
。 - 将生成的
nginx.exe
文件复制到C:\nginx\
目录中,并复制配置文件、HTML文件等。
- 在Windows上没有标准的安装路径。您可以将编译生成的Nginx二进制文件和相关文件复制到目标目录,例如
-
配置Nginx进行心跳检测:
- 编辑Nginx配置文件
nginx.conf
,添加心跳检测配置。 - 示例配置:
http { upstream backend { server 127.0.0.1:8080; server 127.0.0.1:8081; check interval=3000 rise=2 fall=5 timeout=1000 type=http; } server { listen 80; location / { proxy_pass http://backend; } location /nginx_status { stub_status; allow 127.0.0.1; deny all; } } }
- 编辑Nginx配置文件
-
启动Nginx:
- 打开命令提示符,导航到
C:\nginx
目录,并运行以下命令启动Nginx:nginx.exe
- 打开命令提示符,导航到
-
验证心跳检测:
- 在浏览器中访问
http://localhost/nginx_status
,您应该能看到Nginx的状态页面,其中包含心跳检测的相关信息。
- 在浏览器中访问
注意事项
- 依赖库:确保MinGW和Nginx源代码中所有依赖库都已正确安装和配置。
- 补丁:有些第三方模块可能需要对Nginx源代码进行补丁处理。确保按照模块文档中的说明应用必要的补丁。
- 兼容性:由于Nginx主要为类Unix系统设计,在Windows上的某些功能可能有兼容性问题。确保所有功能在Windows环境中正常工作。