我可以安全地禁用哪些 Apache2 模块?

问题描述 投票:0回答:6

这些是我启用的模组:

alias
auth_basic
authz_default
authz_groupfile
authz_host
authz_user
autoindex
deflate
dir
env
mime
negotiation
php5
reqtimeout
rewrite
setenvif
status

我正在尝试尽可能减少 Apache 的内存占用。

任何人都可以指导我正确的方向,哪些是我绝对需要的,哪些是可选的?我计划运行 Symfony,但我找不到任何有关 symfony 的要求才能使其全部正常工作。

apache symfony1 apache2 vps
6个回答
9
投票

好吧,您可以首先禁用所有

auth
/
authz
模块,除非您打算让 Apache 为您执行身份验证工作,在这种情况下,仅启用您实际要使用的
auth
模块.

您可能并不真正需要

autoindex
模块;仅当您希望 Apache 自动生成索引文件时才需要它。

deflate
— 您确实想要这样,因此 Apache 可以在发送回客户端之前对数据进行 gzip 压缩(显着减少流量)。

reqtimeout
——这是实验性的。不确定你是否有意包含它。


2
投票

我最近阅读了一个网页,其中详细介绍了可以安全删除哪些 Apache 模块。他考虑了最常见的用例,但您应该始终事后检查并重新启用您确实需要的功能

这是作者启用的模块列表:

core_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
mpm_event_module (static)
http_module (static)
so_module (static)
auth_basic_module (shared)
authn_file_module (shared)
authz_host_module (shared)
authz_user_module (shared)
expires_module (shared)
deflate_module (shared)
headers_module (shared)
dir_module (shared)
mime_module (shared)
setenvif_module (shared)
rewrite_module (shared)
proxy_module (shared)
proxy_fcgi_module (shared)

该页面包含 CentOS 和 Ubuntu 服务器的详细信息。我强烈建议阅读整个页面,因为它包含有关为什么某些软件包被保留或被禁用的详细信息,以及提示。


1
投票

我只使用: dir、php5、authz_host、mime、重写。

禁用无用的模块将为您节省大量资源。

我建议你一一禁用并每次重新启动apache并进行测试。另请注意您一开始拥有哪些模块,以防出现错误,以便能够将其恢复回来


1
投票

我创建了一个小的 python 脚本来帮助你。 请查看 https://github.com/zioalex/unused_apache_modules

这就是您可以期待的:

curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py

1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3

2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1

3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0

To remove safely:
 ['mod_proxy_connect.c']
POPPED:  mod_proxy_connect.c

To KEEP:  ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']

该脚本正在检查实际使用的模块,并建议您可以安全删除哪些内容

POPPED:  mod_proxy_connect.c
以及应该保留什么
To KEEP:  ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']


0
投票

注释掉或禁用所有模块。

while fails $(apachectl configtest) # or apache2ctl configtest on debian
do
 if directive needed
  Add in the module that supplies the directive complained about.
 else
  delete directive
 fi
done

这比将它们一一注释掉更容易,您最终会得到最小集。之后测试一下它是否一切正常,但我已经将它用作一个进程几次,没有出现重大问题,但无配置模块理论上可能会失败(如果存在这样的事情)。


0
投票

我将启用的模块列表从

actions alias auth_basic auth_digest authn_file authz_default authz_groupfile authz_host authz_user autoindex cgi dav dav_fs dav_svn deflate dir env fcgid mime negotiation php5 proxy proxy_balancer proxy_connect proxy_http reqtimeout rewrite ruby setenvif ssl status suexec
大幅缩小到更轻:
authz_host deflate dir fcgid mime php5 rewrite

© www.soinside.com 2019 - 2024. All rights reserved.