在 CentOS 上给 Apache 添加模块,通常有三种方式:yum 安装现成模块、手动编译模块、编译添加第三方模块。下面按常见场景说明。
httpd -v
which httpd
httpd -M # 查看已加载模块
CentOS 一般使用:
httpd/etc/httpd/modules//etc/httpd/conf//etc/httpd/conf.modules.d/yum install mod_ssl
安装后通常会自动生成:
/etc/httpd/conf.modules.d/00-ssl.conf
重启 Apache:
systemctl restart httpd
查看是否加载:
httpd -M | grep ssl
✅ 适合:
有些模块 Apache 已带,只是没启用。
ls /etc/httpd/modules/ | grep mod_proxy
创建或编辑:
vi /etc/httpd/conf.modules.d/00-proxy.conf
内容示例:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
重启:
systemctl restart httpd
yum groupinstall "Development Tools"
yum install httpd-devel
⚠️ httpd-devel 很关键,提供
apxs
以 mod_security 为例(简化):
wget https://github.com/SpiderLabs/ModSecurity/archive/v2.9.5.tar.gz
tar zxvf v2.9.5.tar.gz
cd ModSecurity-2.9.5
./configure --with-apxs=/usr/bin/apxs
make
make install
安装后会自动:
.so 到 modulesvi /etc/httpd/conf.modules.d/00-mod_security.conf
LoadModule security2_module modules/mod_security2.so
重启:
systemctl restart httpd
仅当你:
步骤略复杂,一般不建议在 CentOS 上这样做。
journalctl -xe
httpd -t
确保:
LoadModule xxx_module modules/mod_xxx.so
路径相对 /etc/httpd/
setenforce 0 # 临时
# 或
ausearch -m avc -ts recent
| 场景 | 推荐方式 |
|---|---|
| 官方模块 | yum |
| 已有模块未启用 | LoadModule |
| 第三方模块 | apxs 编译 |
| 特殊需求 | 重编 Apache |
如果你能告诉我具体想加哪个模块(比如 mod_wsgi、mod_security、mod_http2),我可以给你精确步骤。