【服务器知识】如何在linux上编译安装一个nignx的功能模块
文章目录
- **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,可以保留原有配置并重新编译新版本:
- 备份现有配置文件和日志路径。
- 下载新版本源码并重新编译。
- 使用
make upgrade
替换旧版本二进制文件。
通过以上步骤,你可以在 Linux 上成功编译并安装带有自定义功能模块的 Nginx。如果有任何问题,请随时提问!