静态网站所需的最低限度的 Apache 模块,无需身份验证

静态网站所需的最低限度的 Apache 模块,无需身份验证

我刚刚在 RHEL 6.1(提供 Apache 2.2.15)中安装了 httpd 包。默认的 httpd.conf 包含不少于 50 个 LoadModule 指令实例。

然而,我想要做的只是提供静态内容、一张或两张 Google 地图和一些 CSS。

经过反复试验,apachectl configtest我相信我只需启用以下模块就可以解决问题(不对默认配置文件进行其他更改):

mod_authz_host
mod_log_config
mod_mime_magic
mod_setenvif
mod_mime
mod_autoindex
mod_negotiation
mod_dir
mod_alias

是否有模块应该包含在此列表中,以便服务器更好/更安全地运行?官方文档似乎表明对于一个基本的站点来说,没有什么比这更重要的了mod_dirmod_mime

注意:我并不是在征求有关使用哪个 HTTP 服务器来完成指定任务的建议。我知道存在“更轻量”的服务器。这个问题是关于 Apache 模块的。

答案1

官方 2.2 文档中提到了答案,在性能调优

这里出现的一个相关问题当然是您需要哪些模块,哪些不需要。当然,这里的答案会因网站而异。但是,您可以使用的模块的最小列表往往包括 mod_mime、mod_dir 和 mod_log_config。mod_log_config 当然是可选的,因为您可以在没有日志文件的情况下运行网站。但是,不建议这样做。

答案2

当我在为一台新 PC 设置 Apache 2.2 时,我注意到了这个问题。下面是我设法想出的绝对最小的 httpd.conf:

    ServerName 127.0.0.1
    Listen 8080
    LoadModule dir_module modules/mod_dir.so
    LoadModule mime_module modules/mod_mime.so
    DirectoryIndex index.html 
    DocumentRoot "C:/http_root"
    ErrorLog "logs/error.log"
    LogLevel warn                

当然,您不需要ErrorLog,但我正在试验,因此如果我的 httpd.conf 文件导致问题,显然需要一些反馈。您需要ServerName避免在启动期间出现无法可靠地确定服务器地址的警告。我当然可以确认您确实需要dir_modulemime_module以便您可以从目录 URL 提供默认文件,并将文件显示为 HTML 而不是纯文本。

我发布此信息是因为我发现默认的 httpd.conf 文件非常复杂,我记得当我学习 Tomcat 时,当我发现绝对最小的服务器配置文件时,一切都变得更加清晰。

如果您想要服务器 php 页面,您只需要以下两行(根据您的环境进行调整):

PHPIniDir "C:/php/"
LoadModule php5_module "C:/php/php5apache2_2.dll"

答案3

这花了一个上午的时间反复试验,但在 Red hat 6 上,这个方法有效,注意,我必须覆盖现有的 .htaccess 文件,我无法更改该文件。这将指向根目录中的 offline.html

ServerName 127.0.0.1
Listen 80
TypesConfig /etc/mime.types
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so

User apache
Group apache
DocumentRoot "/homedir/"
DirectoryIndex offline.html
ErrorLog "/homedir/error.log"
LogLevel warn  

<Directory />
AllowOverride None
</Directory>

如果您不需要覆盖 htaccess 文件,您可能可以解决这个问题(假设您想要错误日志记录):

ServerName 127.0.0.1
Listen 80
TypesConfig /etc/mime.types
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so

User apache
Group apache
DocumentRoot "/homedir/"
DirectoryIndex offline.html
ErrorLog "/homedir/error.log"
LogLevel warn  

答案4

我正在研究和测试,发现这在亚马逊Linux 2023操作系统阿帕奇/2.4.56。您甚至可以通过删除Removable部分来进一步最小化它。

# ********** #
# Operating System: Amazon Linux 2023
# Apache Server version: Apache/2.4.56 (Amazon Linux)
# Apache Server built:   Mar 15 2023 00:00:00
# ********** #

Listen 80
DocumentRoot "/var/www/html"
DirectoryIndex index.html

# Required modules
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule systemd_module modules/mod_systemd.so

# Removable
# This is to suppress warning message AH00558: httpd: Could not reliably determine the server's fully qualified domain name
ServerName 127.0.0.1

# Removable
# Just to suppress warning message in logs/error_log
User nobody
Group nobody

# Removable if you don't need logs
ErrorLog "logs/error_log"
LogLevel warn

# Strangely I don't need the mime modules to work. The file is displayed in HTML just fine

欢迎评论。我还没有在 Debian 或其他基于 Fedora/CentOS 的发行版中尝试过。Amazon Linux 2023 本身基于FedoraCentOS 9 Stream发行版的混合。

相关内容