Apache配置结构

Directory选项



块指的是文件系统中的目录,并指定Apache对于该目录的行为。 此目录块以角括号括起,并以单词“ Directory”开头,并指向文件系统中目录的路径。 目录块中设置的选项适用于指定的目录及其子目录。 以下是目录块的示例:

  1. <Directory /srv/www/example.com/public_html/images>
  2.     Order Allow,Deny
  3.     Allow from all
  4.     Deny 55.1
  5. </Directory>

关于块的附加注释:
目录块不能彼此嵌套。
目录块可以嵌套在块中。
目录块中包含的路径可以包含通配符。 星号(例如*)将匹配任何系列的字符,而问号(例如?)将匹配任何单个字符。 如果需要控制所有虚拟主机的DocumentRoot的选项,这可能很有用。 如下行:

  1. <Directory /srv/www/*/public_html>

File选项



如果需要进一步控制服务器上目录中的特定文件,可以使用指令。 这控制Web服务器关于单个文件的行为。 指令将应用于具有指定名称的任何文件。 例如,以下示例指令将匹配文件系统中名为roster.htm的任何文件:

  1. <Files roster.htm>
  2.      Order Allow,Deny
  3.      Deny from all
  4. </Files>

如果包含在块中,将应用于DocumentRoot中名为roster.htm的所有文件或位于该主机的DocumentRoot中的目录。 如果指令包含在块中,则指定的选项将应用于目录中名为roster.htm的所有文件,或指定的目录的子目录中。

Location选项



虽然块控制Apache关于文件系统中位置的行为,但指令控制Apache关于客户端请求的特定路径的行为。 如果用户请求http://www.example.com/webmail/inbox/,网络服务器将在DocumentRoot下的webmail /inbox /目录中查找,例如/srv/www/example.com/public_html/webmail/inbox/。 此功能的一个常见用途可能是允许脚本处理对给定路径发出的请求。 例如,以下块将指定路径的所有请求都定向到一个mod_python脚本:

  1. <Location /webmail/inbox>
  2.     SetHandler python-program
  3.     PythonHandler modpython
  4.     PythonPath "['/srv/www/example.com/application/inbox'] + sys.path"
  5. </Location>

htaccess选项



除了上面讨论的配置方法,默认情况,Apache会从位于该目录中的文件读取目录的配置选项。 此文件通常称为.htaccess。 在您的httpd.conf和连接的文件中查找以下配置选项:

  1. AccessFileName .htaccess
  2.  
  3. <Files ~ "^\.ht">
  4.     Order allow,deny
  5.     Deny from all
  6. </Files>

第一行告诉Apache在.htaccess文件中查找可公开访问的目录中的配置选项。 第二个指令指示Apache拒绝名称以.ht开头的文件的所有请求。 这将阻止访问者访问配置选项。
您可以更改AccessFileName以指定其他Apache可以查找这些配置选项的名称。 如果更改此选项,请务必更新指令以防止无意中的公开访问。 出于安全原因,不建议这样做。
块中的任何选项,都可以在.htaccess文件中配置。 .htaccess文件使得没有服务器权限的普通用户可以自己配置部署Apache选项。

“Match”指令和正则表达式


除了上述基本指令之外,Apache还允许服务器管理员在指定目录,文件和位置方面有一些额外的灵活性。 这些“Match”块和正则表达式定义的指令块允许管理员为一类目录,文件和位置定义一组配置选项。 这里是一个例子:

  1. <DirectoryMatch "^.+/images">
  2.     Order Allow,Deny
  3.     Allow from all
  4.     Deny 55.1
  5. </DirectoryMatch>

此配置块指定与正则表达式^+ images匹配的目录的多个选项。 换句话说,以多个字符开头并以图片结尾的任何路径都将与这些选项匹配,包括以下路径:/srv/www/example.com/public_html/images/,/srv/www/example.com/public_html/objects/images和/home/username/public/www/images。

  1. <Directory ~ "^.+/images">
  2.     Order Allow,Deny
  3.     Allow from all
  4.     Deny 55.1
  5. </Directory>

Apache提供类似的功能,可以在Location,Files使用正则表达式匹配一类目录或文件。 如下配置:

  1. <Files ~ "^\..+">
  2.     Order allow,deny
  3.     Deny from all
  4. </Files>
  5.  
  6. <FilesMatch "^\..+">
  7.     Order allow,deny
  8.     Deny from all
  9. </FilesMatch>
  10.  
  11. <Location ~ "inbox$">
  12.     Order Deny,Allow
  13.     Deny from all
  14.     Allow 192.168
  15. </Location>
  16.  
  17. <LocationMatch "inbox$">
  18.     Order Deny,Allow
  19.     Deny from all
  20.     Allow 192.168
  21. </LocationMatch>

注意,上述指令是等效的,指令也是同样的。

标签:Apache 发布于:2019-11-21 15:49:35