Article

各种 Web 服务器的样板配置「Apache」

Apache 服务器配置

Apache Server Configs 是配置片段的集合,可以帮助您的服务器提高网站的性能和安全性,同时还确保使用正确的内容类型来提供资源,并且在需要时甚至跨域都可以访问这些资源。

入门

有两种获取Apache服务器配置的选项:

  • 如果您有权访问 main server configuration file (通常称为 httpd.conf), 则应以这种方式配置 Apache。这通常是推荐的方法,因为使用.htaccess文件会降低 Apache的速度!
  • 如果您没有访问权限(这在托管服务中很常见),请继续阅读本文.htaccess指南部分。

直接使用Apache服务器配置存储库需要执行一些必需的步骤。请参阅 Apache 官方指南。 Apache Getting Started.

检查 httpd.conf 设置

首先要检查的是,该 httpd.conf 文件包含适合您的特定安装值。

具体的变量如下:

  • ServerRoot
  • User
  • Group
  • ErrorLog
  • CustomLog
  • TypesConfig (确保 mime.types 文件路径有效)

Apache 测试和重新加载

  • 验证 Apache 配置

    apache2 -t
    
  • 验证带有自定义文件的 Apache 配置

    apache2 -t -f httpd.conf
    
  • 重新加载 Apache 并应用新配置

    apache2ctl reload
    

启用 Apache httpd 模块

如果未启用适当的模块,则某些配置将无效。因此,为了使所有功能都能按预期工作,您需要确保已启用以下 Apache 模块:

有关配置文件以及如何使用它们的更多详细信息,请查看相应的 Apache 官方文档:

Standalone

下列说明适用于 apt-get 用于安装 Apache 的任何发行版。

  1. 打开一个终端,然后键入以下命令。出现提示时输入密码。

    sudo a2enmod setenvif headers deflate filter expires rewrite include
    
  2. 使用以下命令重新启动 apache,以便新配置生效。

    sudo /etc/init.d/apache2 restart
    

MAMP/WAMP/XAMPP

  • MAMP PRO. 在主屏幕上,单击 Apache 选项卡,并确保已选中所有必需的模块,表明它们已启用。

  • WampServer. 如果您已经安装 WampServer 只要点击任务栏中的图标,然后点击 Apache - modules 。您将看到一个模块列表。只需单击一个模块名称即可启用它。启用模块后,WampServer 将自动重新启动 Apache 服务。

  • Others. 找到该httpd.conf文件,通常在以下位置找到:

    • MAMP: /Applications/MAMP/conf/apache/httpd.conf
    • XAMPP: /Applications/XAMPP/etc/httpd.conf
    • WAMP: C:\apache\conf\httpd.conf

在文本编辑器中打开文件,然后取消注释所有必需的模块。完成后,重置 MAMP / WAMP / XAMPP。

使用方法

配置文件的默认位置是/usr/local/apache2/,但是这些文件可以位于各种位置,具体取决于您安装服务器的方式。

这些文件的公共位置可以在 httpd wiki 中找到.

作为参考

要用作参考,不需要任何特殊的安装步骤,可以将存储库下载/签出到方便的位置,并采用该存储库中包含所需功能的现有 httpd 配置进行调整。

下载最新版本的文档.

直接使用

要直接使用,请从此存储库添加 httpd 配置文件。

例如:

apache2ctl stop
git clone https://github.com/h5bp/server-configs-apache.git /tmp/h5bp-apache
cd /usr/local
cp -r apache2 apache2-previous
cp -r /tmp/h5bp-apache/* apache2
# install-specific edits
apache2ctl start

管理网站

cd /usr/local/apache2/vhosts
  • 建立一个新的网站

    cp templates/example.com.conf .actual-hostname.conf
    sed -i 's/example.com/actual-hostname/g' .actual-hostname.conf
    
  • 启用网站

    mv .actual-hostname.conf actual-hostname.conf
    
  • 禁用网站

    mv actual-hostname.conf .actual-hostname.conf
    
apache2ctl reload

.htaccess 文件

用法

只需将.htaccess文件复制到网站的根目录即可。

获取方式:下载 h5bp.htaccess 的最新版本 latest release 并且重命名为 .htaccess

自定义 .htaccess

安全性,mime 类型和缓存最佳做法一直不断发展,因此您也应该自定义 .htaccess 文件。过去,在每个新的 Apache Server Configs 版本中,找出 .htaccess 新的技巧或仅在某些细微差别上进行了非常繁琐的更改。

构建脚本,是可重复使用和可定制的,构建配置可以让你轻松地更新您的 .htaccess 文件。每个新 .htaccess 构建都将包含更新的 Apache Server Configs源文件,这些文件将根据 htaccess.conf 项目根目录中的设置启用或禁用。

配置 htaccess.conf

它允许您定义项目启用或禁用的模块。只需将 htaccess.conf 中的默认值复制到您的项目目录,根据您的需要进行调整,添加您项目所需的自定义代码段。它的语法很简单,几乎是不言自明的:

# Example Module

title   "example module"
enable  "src/example-module/images.conf"
enable  "src/example-module/web_fonts.conf"
disable "src/example-module/not-needed.conf"
omit    "src/example-module/not-needed-at-all.conf"

#... more modules ...

禁用模块

例如, “Cross-origin web fonts” 始终包含在 .htaccess 文件中并且已经启用

注释禁用:

disable  "h5bp/cross-origin/web_fonts.conf"

排除:

omit  "h5bp/cross-origin/web_fonts.conf"

启用模块

例如, “Forcing https:// 代码段默认情况下处于禁用状态,要启用此代码段,请将disable关键字更改为enable

enable "h5bp/rewrites/rewrite_http_to_https.conf"

自定义模块

想象一下,您正在将对不存在文件的所有请求传递到您喜欢的 Web 框架。相应的 mod_dir 片段将如下所示:

FallbackResource index.php

将此代码段存储在一个文件中,例如 config/framework_rewrites.conf,并在您的 htaccess.conf 中添加参考:

# PROJECT MODULES
enable "config/framework_rewrites.conf"

构建脚本

访问项目根目录,并从克隆存储库的任何地方调用构建脚本。这是三个示例:

  1. 创建一个默认 .htaccess

在当前工作目录中创建一个默认.htaccess,htaccess.conf 将使用此目录中的现有目录。

$ path/to/server-configs-apache/bin/build.sh

# Output looks like:
[✔] Build .htaccess
[✔] Moved in place: './.htaccess'
  1. 自定义输出位置

只需添加输出路径和文件名作为参数即可。顺便说一句,如果有现有.htaccess文件,则构建脚本将创建一个备份。

$ path/to/server-configs-apache/bin/build.sh htdocs/.htaccess
[✔] Build .htaccess
[✔] Create backup: 'htdocs/.htaccess~'
[✔] Moved in place: 'htdocs/.htaccess'
  1. 自定义.htaccess配置

为什么不维护您的个人~/htaccess.conf?本示例.htaccess根据您可能已存储在$HOME目录中的常用设置在当前工作目录中创建一个:

path/to/server-configs-apache/bin/build.sh ./.htaccess ~/htaccess.conf

版本支持

  • Apache v2.4.10+

其他服务器配置样本

「Apache」 「IIS」 「Lighttpd」 「Nginx」