配置 Apache

可用两种不同的方法配置 SUSE Linux Enterprise Server 中的 Apache:通过 YaST 或手动配置。手动配置可提供更详细的信息,但没有 YaST GUI 方便。

[Important]配置更改

对 Apache 的大多数配置值的更改仅在重启动或重新装载 Apache 之后生效。当使用 YaST 并通过对 HTTP 服务选择已启用完成配置后,上述操作会自动发生。第 28.3 节 “启动和停止 Apache”中对手动重启动进行了描述。大多数配置更改仅需要使用 rcapache2 reload 进行重新装载即可。

手动配置 Apache

手动配置 Apache 包括作为用户来编辑纯文本配置文件。

配置文件

Apache 配置文件可在两个不同位置处获取:

  • /etc/sysconfig/apache2

  • /etc/apache2/

/etc/sysconfig/apache2

/etc/sysconfig/apache2 控制 Apache 的某些全局设置,例如要装载的模块、要包含的其他配置文件、启动服务器时应同时启动的标志,以及应添加到命令行的标志。此文件中的每个配置选项都有详细记录,因此在此不再描述。对于一般用途的 Web 服务器,/etc/sysconfig/apache2 中的设置应足以满足所有配置需要。

/etc/apache2/

/etc/apache2/ 托管 Apache 的所有配置文件。下面描述了每个文件的用途。每个文件均包含几个配置选项(也称为指令)。这些文件中的每个配置选项都有详细记录,因此在此不再描述。

Apache 配置文件按如下所示组织:

/etc/apache2/
 |
 |- charset.conv 
 |- conf.d/
 |   |
 |   |- *.conf
 |
 |- default-server.conf
 |- errors.conf
 |- httpd.conf
 |- listen.conf
 |- magic
 |- mime.types
 |- mod_*.conf
 |- server-tuning.conf
 |- ssl.*
 |- ssl-global.conf
 |- sysconfig.d
 |   |
 |   |- global.conf
 |   |- include.conf
 |   |- loadmodule.conf . .
 |
 |- uid.conf
 |- vhosts.d
 |   |- *.conf

/etc/apache2/ 中的 Apache 配置文件

charset.conv

指定要用于不同语言的字符集。不编辑。

conf.d/*.conf

其他模块添加的配置文件。可在需要时将这些配置包含进虚拟主机配置。有关示例请参见 vhosts.d/vhost.template。如此操作后,可以为不同的虚拟主机提供不同的模块集。

default-server.conf

具有合理默认值的所有虚拟主机的全局配置。除了更改值之外,还可以使用虚拟主机配置来覆盖它们。

errors.conf

定义 Apache 如何响应错误。要为所有虚拟主机自定义这些消息,请编辑此文件。否则在您的虚拟主机配置中覆盖这些指令。

httpd.conf

主 Apache 服务器配置文件。请勿更改此文件。它主要含有 include 语句和全局设置。重写此处列出的相应配置文件中的全局设置。更改您的虚拟主机配置中的特定于主机的设置(例如文档根目录)。

listen.conf

将 Apache 绑定到特定的 IP 地址和端口。基于名称的虚拟托管(请参见第 28.2.1.2.1 节 “基于名称的虚拟主机”,它也是在此处配置的)。

magic

mime_magic 模块的数据帮助 Apache 自动确定 MIME 类型的未知文件。不更改。

mime.types

MIME 类型可由系统识别(它实际上是一个指向 /etc/mime.types 的链接)。不编辑。如果需要添加此处没有列出的 MIME 类型,那么请将它们添加到 mod_mime-defaults.conf

mod_*.conf

默认情况下安装的模块的配置文件。有关细节,请参见第 28.4 节 “安装、激活和配置模块”。注意,可选模块的配置文件储存在目录 conf.d 中。

server-tuning.conf

包含不同 MPM(请参见第 28.4.4 节 “多处理模块”)的配置指令以及控制 Apache 性能的常规配置选项。在此处更改时,请对 Web 服务器进行合理的测试。

ssl-global.confssl.*

全局 SSL 配置和 SSL 证书数据。有关细节,请参见第 28.6 节 “使用 SSL 设置安全性 Web 服务器”

sysconfig.d/*.conf

/etc/sysconfig/apache2 自动生成的配置文件。请勿更改这些文件,而应编辑 /etc/sysconfig/apache2。请勿在此目录中放置其他配置文件。

uid.conf

指定运行 Apache 的用户和组 ID。不更改。

vhosts.d/*.conf

应该在此处提供虚拟主机配置。该目录中包含虚拟主机(有无 SSL 均可)的模板文件。该目录中以 .conf 结尾的所有文件均自动包含在 Apache 配置中。有关细节,请参见第 28.2.1.2 节 “虚拟主机配置”

虚拟主机配置

术语虚拟主机指 Apache 在一个物理计算机上为多个 URI(统一资源标识符)提供服务的能力。这意味着在一台物理计算机上的一个 Web 服务器可以运行几个域(例如 www.example.com 和 www.example.net)。

通常的做法是使用虚拟主机来节省管理精力(只需维护一个 Web 服务器即可)和硬件费用(每个域不需要专用的服务器)。虚拟主机可以是基于名称、基于 IP 或基于端口的。

要列出所有现有虚拟主机,请使用命令 httpd2 -S。该命令将输出一个列表,显示默认服务器和所有虚拟主机以及它们的 IP 地址和侦听端口。此外,该列表还针对每个虚拟主机包含一项,显示其在配置文件中的位置。

可以通过 YaST(请参见第 28.2.2.1.4 节 “虚拟主机”)或通过手动编辑配置文件来配置虚拟主机。默认情况下,SUSE Linux Enterprise Server 中的 Apache 在 /etc/apache2/vhosts.d/ 中为每个虚拟主机准备了一个配置文件。该目录中扩展名为 .conf 的所有文件均会自动包含到配置中。虚拟主机的基本模板将在目录 vhost.templatevhost-ssl.template 中提供,以用于带有 SSL 支持的虚拟主机。

[Tip]始终创建虚拟主机配置

建议您始终创建虚拟主机配置文件,即使您的 Web 服务器仅主管一个域。通过如此操作,不但可以将特定于域的配置保存在一个文件中,而且您始终能通过简单的移动、删除或重命名虚拟主机的配置文件来回到工作基本配置。因此,还应该为每个虚拟主机创建单独的配置文件。

<VirtualHost></VirtualHost> 块保存适用于特定域的信息。当 Apache 接收到客户机对某已定义虚拟主机的请求时,将使用此部分包含的指令。几乎所有指令均可用在虚拟主机环境中。请参见 http://httpd.apache.org/docs/2.2/mod/quickreference.html 来获取有关 Apache 的配置指令的进一步信息。

基于名称的虚拟主机

使用基于名称的虚拟主机,每个 IP 地址能服务于多个网站。Apache 使用客户程序发送的 HTTP 报头中的主机字段来将请求连接到某个虚拟主机声明中匹配的 ServerName 项。如果找不到匹配的 ServerName,则默认使用第一个指定的虚拟主机。

指令 NameVirtualHost 告诉 Apache 在哪个 IP 地址以及(可选)哪个端口上侦听客户机发出的在 HTTP 报头中包含域名的请求。此选项是在配置文件 /etc/apache2/listen.conf 中配置的。

第一个自变量是完全限定的域名,但建议使用 IP 地址。第二个自变量是可选的端口。默认情况下,使用端口 80 并通过 Listen 指令进行配置。

IP 地址和端口号都可以使用通配符 * 来接收所有接口上的请求。IPv6 地址必须括在方括号中。

例 28.1. 基于名称的 VirtualHost 项的变体

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.3.100:80
NameVirtualHost 192.168.3.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:364::]:80

打开 VirtualHost 标记将使先前使用 NameVirtualHost 声明的 IP 地址(或全限定域名)在基于名称的虚拟主机配置中显示为参数。之前使用 NameVirtualHost 指令声明的端口号是可选的。

允许使用通配符 * 代替 IP 地址。该语法仅当和 NameVirtualHost * 中的通配符一起使用时才有效。当使用 IPv6 地址时,地址必须括在方括号中。

例 28.2. 基于名称的 VirtualHost 指令

<VirtualHost 192.168.3.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.3.100>
  ...
</VirtualHost>

<VirtualHost *:80>
  ...
</VirtualHost>

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:364::]>
  ...
</VirtualHost>

基于 IP 的虚拟主机

这种备选的虚拟主机配置要求为计算机设置多个 IP。Apache 的一个实例储存多个域,并为每个域指派一个不同的 IP。

物理服务器必须为每个基于 IP 的虚拟主机指定一个 IP 地址。如果计算机没有多个网卡,也可以使用虚拟网络接口(IP 别名)。

以下示例显示 Apache 在 IP 为 192.168.3.100 且主管其他两个 IP 为 192.168.3.101192.168.3.102 的域的计算机上运行的情况。请为每个虚拟服务器指定一个单独的 VirtualHost 块。

例 28.3. 基于 IP 的 VirtualHost 指令

<VirtualHost 192.168.3.101>
  ...
</VirtualHost>

<VirtualHost 192.168.3.102>
  ...
</VirtualHost>

在此,VirtualHost 指令只针对除 192.168.3.100 以外的接口。当还为 192.168.3.100 配置 Listen 指令时,必须创建单独的、基于 IP 的虚拟主机才能应答对该接口的 HTTP 请求,否则应用在默认服务器配置 (/etc/apache2/default-server.conf) 中找到的指令。

基本虚拟主机配置

每个虚拟主机配置中至少要有以下指令,这样才能设置虚拟主机。请参见 /etc/apache2/vhosts.d/vhost.template 获取更多选项。

ServerName

主机所在的全限定域名。

DocumentRoot

Apache 应该为此主机提供文件的目录路径。出于安全考虑,在默认情况下禁止访问整个文件系统,所以必须在目录容器中显示地解锁此目录。

ServerAdmin

服务器管理员的电子邮件地址。例如,此地址将显示在 Apache 创建的错误页面上。

ErrorLog

该虚拟主机的错误日志文件。尽管不必为每个虚拟主机创建单独的错误日志文件,但是通常建议执行此操作,因为这样能使错误调试变得容易些。/var/log/apache2/ 是 Apache 日志文件所在的默认目录。

CustomLog

该虚拟主机的访问日志文件。尽管不必为每个虚拟主机创建单独的访问日志文件,但是通常建议执行此操作,因为这样可单独分析每个主机的访问统计信息。/var/log/apache2/ 是 Apache 日志文件所在的默认目录。

综上所述,出于安全考虑,在默认情况下禁止访问整个文件系统。因此,明确解除已放置 Apache 应提供的文件所在目录的锁 定,例如 DocumentRoot

<Directory "/srv/www/www.example.com/htdocs">
  Order allow,deny
  Allow from all
</Directory>

完整的配置文件外观如下所示:

例 28.4. 基本 VirtualHost 配置

<VirtualHost 192.168.3.100>
  ServerName www.example.com;
  DocumentRoot /srv/www/www.example.com/htdocs
  ServerAdmin webmaster@example.com
  ErrorLog /var/log/apache2/www.example.com_log
  CustomLog /var/log/apache2/www.example.com-access_log common
  <Directory "/srv/www/www.example.com/htdocs">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

使用 YaST 配置 Apache

要使用 YaST 配置 Web 服务器,请启动 YaST,并选择网络服务+HTTP 服务器。第一次启动此模块时,HTTP 服务器向导启动,提示您做出一些有关服务器管理的基本决定。完成向导后,在您每次调用 HTTP 服务器模块时,第 28.2.2.2 节 “HTTP 服务器配置”中的对话框都会打开。

HTTP 服务器向导

HTTP 服务器向导包括五个步骤。在对话框的最后一步中,您可以进入专家配置方式进行更特定的设置。

网络设备选择

在这里,指定 Apache 用以侦听进来的请求的网络接口和端口。可以选择现有网络接口及其各自 IP 地址的任意组合。可以使用其他服务未预留的所有三个范围内的端口(公认端口、注册端口和动态或私用端口)。默认设置就是在所有网络接口(IP 地址)的端口 80 上监听。

选择打开所选端口上的防火墙,在防火墙中打开 Web 服务器侦听的端口。要使 Web 服务器在网络(LAN、WAN 或公共因特网)中可用,这样做是必要的。仅在测试时不必对 Web 服务器进行外部访问的情况下,关闭端口是有用的。如果您有多个网络接口,请单击防火墙细节... 以指定要打开其端口的接口。

单击下一步继续配置。

模块

模块配置选项允许激活或停用脚本语言,Web 服务器应该支持这种功能。要激活或停用其他模块,请参见第 28.2.2.2.2 节 “服务器模块”。单击下一步进入下一个对话框。

默认主机

该选项与默认的 Web 服务器相关。正如第 28.2.1.2 节 “虚拟主机配置”中所述,Apache 可以在一台物理计算机上为多台虚拟主机提供服务。配置文件中首先声明的虚拟主机通常被称为默认主机。每个虚拟主机都将继承默认主机的配置。

要编辑主机设置(也称为指令),在表中选择适当的项,然后单击编辑。要添加新指令,请单击添加。要删除指令,请选择该主机,然后单击删除

图 28.1. HTTP 服务器向导:默认主机

HTTP 服务器向导:默认主机

这里是服务器默认设置的列表:

文档根目录

Apache 为此主机提供文件的目录路径。/srv/www/htdocs 是默认位置。

别名

借助 Alias 指令,URL 可以被映射到物理文件系统位置。这意味着可以通过对某路径进行 URL 别名判别来访问该路径(即使是在文件系统中文档根目录之外的路径)。

默认的 SUSE Linux Enterprise Server Alias/icons 指向显示在目录索引视图中的 Apache 图标所在的 /usr/share/apache2/icons

ScriptAlias

Alias 指令类似,ScriptAlias 指令将 URL 映射到文件系统位置。不同之处在于 ScriptAlias 将目标目录指定为 CGI 位置,意味着 CGI 脚本应该在此位置执行。

目录

设置目录后,便可包含一组只能用于指定目录的配置选项。

目录 /usr/share/apache2/icons/srv/www/cgi-bin 的访问和显示选项是在此处配置的。不需要更改默认值。

包括

使用 include,还可指定其他配置文件。已预配置两个 Include 指令:/etc/apache2/conf.d/ 是包含与外部模块一起提供的配置文件的目录。使用此指令可包含该目录中以 .conf 结尾的所有文件。使用第二个指令可包含 /etc/apache2/conf.d/apache2-manual.confapache2-manual 配置文件)。

服务器名

这指定了客户机用来联系 Web 服务器的默认 URL。使用完全限定的域名 (FQDN) 到达 Web 服务器(位于 http://FQDN/)或其 IP 地址。不能在此处随意选择名称 - 服务器在此名称下必须是“已知”的。

服务器管理员电子邮件

服务器管理员的电子邮件地址。例如,此地址将显示在 Apache 创建的错误页面上。

完成默认主机步骤后,单击下一步继续完成配置。

虚拟主机

在本步骤中,向导显示已配置的虚拟主机(请参见第 28.2.1.2 节 “虚拟主机配置”)的列表。如果启动 YaST HTTP 向导前未进行手动更改,将不显示虚拟主机。

要添加主机,请单击添加以打开一个对话框,可在其中输入有关该主机的基本信息,如服务器名称服务器内容根 (DocumentRoot) 和管理员电子邮件服务器解析用来确定如何识别主机(基于名称或基于 IP)。通过更改虚拟主机 ID 指定名称或 IP 地址。

单击下一步进入虚拟主机配置对话框的第二部分。

在虚拟主机配置的第二部分中,可以指定是否启用 CGI 脚本以及用于这些脚本的目录。还可启用 SSL。如果要启用,还必须指定证书的路径。请参见第 28.6.2 节 “使用 SSL 配置 Apache”了解有关 SSL 和证书的细节。使用目录索引选项,可指定在客户机请求目录时显示的文件(默认情况下为 index.html)。如果要更改此选项,请添加一个或多个文件名(用空格分隔)。使用启用公共 HTML,用户公共目录 (~user/public_html/) 的内容可显示在 http://www.example.com/~user 下的服务器上。

[Important]创建虚拟主机

不能随意添加虚拟主机。如果使用基于名称的虚拟主机,必须在网络上解析每个主机名。如果使用基于 IP 的虚拟主机,则仅可向每个可用的 IP 地址指定一个主机。

摘要

这是本向导的最后一步。在此,确定 Apache 服务器启动的方式和时间:何时引导或手动引导。另请参见迄今为止所作配置的简短摘要。如果对设置满意,单击完成以完成配置。如果要进行更改,请单击后退直至显示所需的对话框。单击 HTTP 服务器专家配置打开第 28.2.2.2 节 “HTTP 服务器配置”中所述的对话框。

图 28.2. HTTP 服务器向导:摘要

HTTP 服务器向导:摘要

HTTP 服务器配置

HTTP 服务器配置对话框还允许您对配置进行比在向导(它只在您首次配置 Web 服务器时运行)中更多的调整。它由四个如下所述的选项卡组成。在此处更改的配置选项都不会立即生效,始终需要使用完成来确认更改从而使其生效。单击中止退出配置模块并丢弃所作更改。

监听端口和地址

HTTP Service 中,选择应该运行(启用)还是停止(禁用)Apache。在侦听端口中,添加编辑删除服务器可用的地址和端口。默认设置就是侦听端口 80 上的所有接口。始终应该选择打开所选端口上的防火墙,否则不能从外部到达 Web 服务器。仅在测试时不必对 Web 服务器进行外部访问的情况下,关闭端口是有用的。如果您有多个网络接口,请单击防火墙细节... 以指定要打开其端口的接口。

使用日志文件查阅访问日志或错误日志。如果要测试配置,这很有用。该日志文件将在单独的窗口中打开,您可从该窗口重启动或重新装载 Web 服务器(有关细节,请参见第 28.3 节 “启动和停止 Apache”)。这些命令将立即生效。

图 28.3. HTTP 服务器配置:侦听端口和地址

HTTP 服务器配置:侦听端口和地址

服务器模块

可以通过单击切换状态来更改 Apache2 模块的状态(启用或禁用)。单击添加模块可添加已安装但还未列出的新模块。要了解模块的更多信息,请参见第 28.4 节 “安装、激活和配置模块”

图 28.4. HTTP 服务器配置:服务器模块

HTTP 服务器配置:服务器模块

主要主机

这些对话框与上述对话框相同。请参见第 28.2.2.1.3 节 “默认主机”第 28.2.2.1.4 节 “虚拟主机”