文章目录
-
-
- **1. 准备工作**
-
- **(1) 安装依赖**
- **(2) 下载 Nginx 源码**
- **2. 添加功能模块**
-
- **(1) 静态编译模块**
- **(2) 动态加载模块**
- **3. 编译与安装**
-
- **(1) 编译**
- **(2) 安装**
- **4. 验证安装**
-
- **(1) 启动 Nginx**
- **(2) 查看模块列表**
- **5. 常见第三方模块**
- **6. 升级 Nginx**
-
在 Linux 上编译安装 Nginx 并添加功能模块是一个常见的需求,可以通过源码编译的方式实现。以下是详细的步骤和说明。
1. 准备工作
(1) 安装依赖
确保系统已经安装了必要的开发工具和库文件。运行以下命令安装依赖:
sudo apt update # 更新包索引(适用于 Debian/Ubuntu 系统)
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y
# 或者对于 CentOS/RHEL 系统:
sudo yum groupinstall "Development Tools"
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
- build-essential 或 Development Tools:提供编译工具链。
- libpcre3/libpcre3-dev 或 pcre/pcre-devel:支持正则表达式。
- zlib1g/zlib1g-dev 或 zlib/zlib-devel:支持 gzip 压缩。
- libssl-dev 或 openssl/openssl-devel:支持 HTTPS。
(2) 下载 Nginx 源码
从 Nginx 官方网站 下载最新版本的 Nginx 源码:
wget http://nginx.org/download/nginx-1.25.3.tar.gz # 替换为最新版本号
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
2. 添加功能模块
Nginx 支持通过动态或静态方式加载功能模块。以下是两种常见的方式:
(1) 静态编译模块
在编译时直接将模块嵌入到 Nginx 中。例如,启用 HTTP SSL 模块和第三方模块 ngx_http_sub_module:
./configure \\
–with-http_ssl_module \\
–add-module=/path/to/ngx_http_sub_module
- –with-http_ssl_module:启用 HTTPS 支持。
- –add-module:指定第三方模块路径。
(2) 动态加载模块
从 Nginx 1.9.11 开始,支持动态加载模块。动态模块不需要重新编译 Nginx,只需在配置文件中加载即可。
编译时启用动态模块支持:
./configure \\
–with-stream \\
–with-http_ssl_module \\
–with-dynamic-module=/path/to/your_dynamic_module
动态模块会在 objs/ 目录下生成 .so 文件,可以在 Nginx 配置文件中通过 load_module 加载:
load_module modules/ngx_http_example_module.so;
3. 编译与安装
(1) 编译
执行以下命令进行编译:
make
(2) 安装
将编译后的文件安装到指定目录(默认为 /usr/local/nginx):
sudo make install
如果需要自定义安装路径,可以在 ./configure 阶段使用 –prefix 参数:
./configure –prefix=/opt/nginx ...
4. 验证安装
(1) 启动 Nginx
启动 Nginx 并验证是否成功:
/opt/nginx/sbin/nginx # 如果更改了安装路径,请替换为实际路径
(2) 查看模块列表
检查已编译的模块:
/opt/nginx/sbin/nginx -V
输出示例:
nginx version: nginx/1.25.3
built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04)
TLS SNI support enabled
configure arguments: –with-http_ssl_module –add-module=/path/to/ngx_http_sub_module
5. 常见第三方模块
以下是一些常用的第三方模块及其用途:
ngx_http_sub_module | 支持字符串替换 |
ngx_http_auth_request_module | 支持基于子请求的身份验证 |
ngx_http_image_filter_module | 支持图片处理 |
ngx_http_mp4_module | 支持 MP4 流媒体播放 |
ngx_http_geoip_module | 支持 IP 地理定位 |
ngx_cache_purge | 支持缓存清理 |
下载地址:Nginx Third-Party Modules
6. 升级 Nginx
如果需要升级 Nginx,可以保留原有配置并重新编译新版本:
通过以上步骤,你可以在 Linux 上成功编译并安装带有自定义功能模块的 Nginx。如果有任何问题,请随时提问!
评论前必须登录!
注册