AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 915135
Accepted
theillien
theillien
Asked: 2018-06-05 10:06:51 +0800 CST2018-06-05 10:06:51 +0800 CST 2018-06-05 10:06:51 +0800 CST

Apache 配置优先级

  • 772

如果我设置了一个不再在我们的任何虚拟主机中使用的配置选项,httpd.conf它是否对每个虚拟主机都有效,或者每个虚拟主机都需要设置该选项?

具体来说,我想设置RewriteLogandRewriteLogLevel选项。可悲的是,我们的虚拟主机配置比理智的要多得多,因此在每个文件中设置此选项并在需要部署它时进行验证会很麻烦(不要让我开始配置管理)。所以,如果我设置它httpd.conf并确保它不在任何虚拟主机配置中,它会适用于每个虚拟主机吗?

httpd.conf
  • 1 1 个回答
  • 220 Views

1 个回答

  • Voted
  1. Best Answer
    Justin Pearce
    2018-06-05T12:03:42+08:002018-06-05T12:03:42+08:00

    根据 Apache doumentation,配置部分按以下顺序合并:

    1. <Directory>(除了正则表达式)和 .htaccess 同时完成(使用 .htaccess,如果允许,覆盖<Directory>)
    2. <DirectoryMatch>(和<Directory "~">)
    3. <Files>并<FilesMatch>同时完成
    4. <Location>并<LocationMatch>同时完成
    5. <If>

    一些重要的评论:

    • 除了<Directory>,在每个组中,这些部分按照它们在配置文件中出现的顺序进行处理。例如,对 /foo 的请求将匹配<Location "/foo/bar">和<Location "/foo">(在本例中为组 4):这两个部分都将被评估,但按照它们在配置文件中出现的顺序。
    • <Directory>(上面的第 1 组)按从最短到最长的目录组件的顺序进行处理。例如,<Directory "/var/web/dir">将在<Directory "/var/web/dir/subdir">.
    • 如果多个<Directory>部分适用于同一目录,则按配置文件顺序处理它们。
    • 通过 Include 指令包含的配置将被视为位于 Include 指令位置的包含文件中。
    • 节内<VirtualHost>的节在虚拟主机定义之外的相应节之后应用。这允许虚拟主机覆盖主服务器配置。
    • 当请求由 mod_proxy 提供服务时,容器将<Directory>在处理顺序中代替容器。

    例如,将按照 A > B > C > D > E 的顺序应用以下内容:

    <Location "/">
        E
    </Location>
    
    <Files "f.html">
        D
    </Files>
    
    <VirtualHost *>
        <Directory "/a/b">
            B
        </Directory>
    </VirtualHost>
    
    <DirectoryMatch "^.*b$">
        C
    </DirectoryMatch>
    
    <Directory "/a/b">
        A
    </Directory>
    

    更多信息可以在文档中找到:https ://httpd.apache.org/docs/2.4/sections.html

    编辑:

    <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location>,<LocationMatch>之类的指令<VirtualHost>只是限制了它们所包含的指令的范围,因此将<IfModule>指令应用于文件的全局区域将全局应用它。

    如果您尝试覆盖mod_rewrite,您可以考虑利用RewriteOptions设置为 的指令InheritDown。这将导致所有子配置从父范围继承设置,相当于放入RewriteOptions Inherit每个子范围。

    <IfModule mod_rewrite.c>
        RewriteOptions InheritDown
        RewriteLog [some setting here]
        RewriteLogLevel [somesettinghere]
    </IfModule>
    

    将此全局放置会将您的日志记录选项应用于每个子范围。

    • 1

相关问题

  • 显示 Apache 配置

  • 如何将我的更改粘贴在 WHM/Cpanel/EasyApache 上的 httpd.conf [关闭]

  • RHEL 4 可以使用两个不同的配置文件运行两个 apache httpd 实例吗?

  • 如何找出运行时使用的 httpd.conf apache

  • httpd.conf 并设置别名

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve