为什么 Apache 的“conf”目录中需要“mime.types”?

为什么 Apache 的“conf”目录中需要“mime.types”?

我已经运行 Apache 大约 5 年了,并且正在对我的网站脚本进行精简。

在此过程中,我删除了所有我不知道用途的目录和文件。在我的服务器根目录中,/srv/这些目录是:

  • man/
  • build/
  • icons/
  • logs/

在我的配置目录中,这些目录(和一个文件)是:

  • magic(文件)
  • extras/

不幸的是,我的服务器在运行 时无法托管页面/bin/apachectl start。重新安装上述文件组合后,我发现我需要logs/在根目录中调试 VirtualHost 日志之外的问题。我还发现我需要文件/conf/mime.types,这引出了我的问题。

我知道此文件在文件扩展名(.doc、.xlsx、.jpeg 等)和“互联网媒体类型”(IMT)之间进行映射,但我不清楚为什么 Apache 需要指定这些。

到目前为止,我使用 IMT 的经验是在 html 中指定它们,这样接收方就知道如何处理文件,并且在我的 Apache 配置文件中,我使用它们以便接收方以某种方式解释文件,而不管其扩展名如何 - 例如确保使用下载按钮进行下载。

为什么删除conf/mime.types文件会导致我的服务器无法正确提供文件?为什么在我的计算机上运行的 Apache 不向更广泛的系统询问答案?是不是通用 Apache 源代码中没有内置这样的映射?

我最好的猜测是,由于我在 .php 脚本上运行我的服务器,如果没有这个文件,Apache 就不知道如何解释我的本地 .php 文件。

如果您能帮助我回答上述问题,或者能够具体告诉我从哪里可以了解更多有关 Apache 稳定性的信息,我将不胜感激。

答案1

“我不清楚为什么 Apache 需要指定这些”

关键是 Apache 本身并不需要真正了解 哑剧 Apache 可以在提供文件时避免使用 MIME 类型,因为它可以直接发送文件。但是,如果没有 Apache 添加到下载文件头中的 MIME 信息,浏览器或接收者将不知道如何处理这些文件。

该文件mime.types包含 Apache 已知的所有 MIME 类型。这些主要用于创建非常重要的 内容类型标头字段 它是在文件本身之前的标头内传输的:

Content-Type 标头字段用于指定实体主体中数据的性质,方法是给出类型和子类型标识符,并提供某些类型可能需要的辅助信息。在类型和子类型名称之后,标头字段的其余部分只是一组参数,以属性/值表示法指定。不同类型的有意义参数集不同。参数的顺序并不重要。在定义的参数中有一个“charset”参数,可以通过它声明主体中使用的字符集。允许根据 RFC 822 结构化标头字段规则添加注释。

一般来说,顶级 Content-Type 用于声明数据的一般类型,而子类型则指定该类型数据的特定格式。因此,Content-Type 为“image/xyz”足以告诉用户代理该数据是图像,即使用户代理不知道特定的图像格式“xyz”。

当给定文件扩展名缺少 MIME 类型信息时,Apache 的现代版本仍应具有某些none 类型的默认值。

mime.types文件只是 Apache 作为 Web 服务器执行其工作所需的非常有用甚至至关重要的文件之一。其中许多文件都具有重要的功能,但其重要性尚未明确指出。我建议保留这些文件和文件夹。删除它们可能会节省几个字节,但无法弥补将来可能遇到的麻烦。

相关内容