免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1748 | 回复: 0
打印 上一主题 下一主题

httpd.conf [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-24 17:45 |只看该作者 |倒序浏览

httpd.conf
2007-10-28 09:14
路径: /usr/local/etc/apache20/httpd.conf
8
7 ServerRoot
6 加入php支持
AddType application /x-httpd-php .php .php5
AddType application /x-httpd-source .php
5 DocumentRoot "/usr/local/www/apache22/data"
设定目录权限
Options Indexes FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
我们按照设定项目在 httpd.conf 中出现的顺序说明每一个项目,您可以使用搜寻的方式查找每一个项目的关键词,以进行设定。
ServerAdmin 设定管理者邮件
设定您的信箱,这个信箱地址当网页出现错误讯息时将出现在该页面上。以下范例为默认值:
ServerAdmin you@example.com
ServerName 设定主机名称及端口号
ServerName 可以让您设定您的主机名称,如果您没有主机名称,可以设定为您机器所使用的 IP。ServerName 会被用来重新转向网址,例如,当您输入一个网址 「http://www.example.com/dir」时,Apache 会参考您在 ServerName 中的设定,将 www.example.com 改成 ServerName,并在您所输入的网址后加上一个斜线「/」以连到 dir 目录中,也就是将网址转向到「http://www.example.com/dir/」。如果您的网址设定不正确,则使用者可能会连到一个不存在的地址。
所以,如果您没有主机名称,可以将这个值设定为 IP,让网址转向后还是可以连到正确的地方。在 ServerName 的设定中,我们也指定了 HTTP 的连接埠 80。
如果您的服务器是位于 NAT 后面,使用 NAT 做 Port Forwarding,建议不要设定这个项目,改将下一个设定选项 UseCanonicalName 设为 On,才不会在转向网址时导到错误的位置。
ServerName www.example.com:80
UseCanonicalName 设定导向网址的方式
Apache 在导向网址时,会参考您所设定的服务器名称及端口号,但当主机使用 NAT Port Forwarding 时,主机名称及端口号可能会不同,这时候我们必须将这个选项设为 On,以免 Apache 转向到错误的地址。
UseCanonicalName Off
DocumentRoot 设定网页根目录
DocumentRoot 可以让我们指定网页根目录的位置,也就是我们存放网页的目录。
DocumentRoot "/usr/local/www/data"
设定好 DocumentRoot 后,我们必须要再设定该目录的权限。在 DocumentRoot 之后,有下列区段:
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
您必须将  也改成您的网页根目录位置。
DirectoryIndex 指定预设网页档名
当使用者使用网址「http://www.example.com/dir」连到一个目录中时,如果没有指定网页,Apache 会去查找 DirectoryIndex 中所设定的网页在不在,如果存在则秀出预设的网页。
预设的网页只有二个,我们可以再加上 index.htm、index.php 等常用的网页:
DirectoryIndex index.php index.htm index.html index.html.var
加入 PHP 支持
如果您要使用 PHP,则必须在 httpd.conf 中加入 PHP 的支持,请在 httpd.conf 档案最后加入下列内容:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
上述设定完成后,您就可以存盘离开。
接下来,我们必在修改 /etc/rc.conf ,并加入下列设定以在开机时启动 Apache:
apache2_enable="YES"
最后,我们就可以使用下列指令以启动 Apache 了:
# /usr/local/etc/rc.d/apache2.sh start
如果您要停止 Apache,可以使用下列指令:
# /usr/local/etc/rc.d/apache2.sh stop
我们可以在网页根目录中新增一个档案来测试 PHP 是否有正常运作,请使用文书编辑软件开一个新文件 test.php,并加入下列内容:
接下来您就可以连到该网页 http://192.168.0.1/test.php (请将 192.168.0.1 改成您的主机 IP) 看看是否可以使用 PHP。如果有支持 PHP,则会显示 PHP 组态,如果没有,则只会出现上述档案内容。
13.3 http.conf 说明
/usr/local/etc/apache2/httpd.conf 是 Apache 的主要设定档。档案中有 # 为开头者是批注,用以说明设定的情形及方式,如果一行的开头有 # 的话,该行对 Apache 就不会产生作用。
我们按照 httpd.conf 中各选项出现的顺序说明几个重要的项目,比较不可能更动的项目我们就不在此说明。这些细部 Apache 的设定看起来有点无趣,但不看过一遍不知道有什么是我们可以调整的项目。建议您先大略浏览过即可,日后有调整的需要时,再回过头来参考即可。
ServerRoot 设定 Apache 执行的根目录
ServerRoot 用以设定 Apache 的根目录位置,记录文件、设定文件的相对目录位置。
ServerRoot "/usr/local"
必须注意的是,如果您的此目录设定为 NFS 或是其它以网络挂入的档案系统中,请先阅读
http://httpd.apache.org/docs-2.0/mod/mpm_common.html#lockfile
关于 LockFile 的说明,以避免一些不必须的问题发生。另外,请勿在 ServerRoot 的路径名称最后面加入 "/" 符号。
LockFile 设定 lock 文件的位置
LockFile 通常只有在您的网页数据使用 NFS 挂入时才会需要设定,否则使用默认值即可。如果您有设定 LockFile,LockFile 必须设定在非网络挂入的档案系统中。
#LockFile /var/log/accept.lock
我们看到 LockFile 这个项目被   包起来,这表示当没有使用 winnt 模块时这个设定才会生效。在下列其它设定中,我们会看到有其它的选项也是以   包起来,意思是一样的。
PidFile 设定 httpd.pid 位置
Apache 在启动时,会将自己的 process id 写入 PidFile 中。
PidFile /var/run/httpd.pid
Timeout 设定联机逾时
Timeout 设定了等待 Client 端响应的时间,以秒为单位。如果 Client 端在指定的时间内没有传送任何数据,即切断联机。
Timeout 300
KeepAlive 是否使用保持联机
设定是否使用保持联机的功能 (Presistent Connections)。当 KeepAlive 设为 On 时,一个已经建立的联机会用来处理多个 HTTP 的请求,也就是一个联机会用来传送多个档案,以避免每一个请求都要重新建立新的联机而降低效能。您可以将 KeepAlive 设为 Off 以关闭保持联机的功能。
KeepAlive On
MaxKeepAliveRequests 最多有几个保持联机
设定最多可以有几个 KeepAlive 的联机。您可以将这个项目设为 0 表示无限制。当有太多的保持联机时,会造成系统资源占用太多。但如果是一个忙录的服务器,建议您提高限制,以增加执行效率。
MaxKeepAliveRequests 100
KeepAliveTimeout 保持联机的逾时时间
同一个 Client 的「保持联机」功能,在多少秒后没有联机的请求即为联机逾时。如果二次请求的时间超过这个设定值,联机就会中断。
KeepAliveTimeout 15
prefork MPM 控制 process 数量
您会看到有很多个 StartServers、MinSpareServers、MaxClients 等设定,每个设定都使用   包起来。这是因为不同的平台会使用不同的模块,而设定就会依平台而有所不同。在 FreeBSD 中,我们使用的是 perfork 这个模块,因此,我们只要设定这个模块中的值即可。
在这个群组中,各个项目所代表的意义如下:

  • StartServers:设定 Apache 在启动时要产生多少个 process 来等待 Client 端的联机。我们使用默认值即可,除非您的服务器同时会有很多新的联机,则可以提高这个值。
  • MinSpareServers:最小要保持多少个空闲的 Apache process 以等待客户端的联机。除非您的网站真的很忙,否则这个值不需要设得太大,太大只会造成资源浪费。
  • MaxSpareServers:设定最多要有多少个空闲的 Apache process。如果您没有设定这个值,则 Apache 会自动将它设为 MinSpareServers+1。如果有太多闲置的 process,Apache 会自动将多余的 process 杀掉。
  • MaxClients:同时可以有多少个联机。MaxClients 应该是这个群组中最重要的设定,它关系着您的主机可以同时处理多少个联机。这个设定应该和您的系统资源相关,如果您的内存不大,而且同时处理很多联机,则 Apache 可能会需要用到 SWAP,而造成处理效能大幅下降。而设得太小时,却会使联机处理变慢。所以,MaxClients 应该由您的主机忙录情形及实际内存大小而决定。
  • MaxRequestsPerChild:当一个 process 联机处理了多少个联机要求后,要将它删除、回收,并启用新的 process 来接受新的要求。预设是没有限制。

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
Listen 设定接受联机的 IP 及埠号
设定 Apache 所要使用的连接埠号。预设的 HTTP 连接埠为 80,我们使用默认值即可,所以我们使用默认值即可。如果您希望 Apache 只接受连到某一个 IP 的联机 (当您同一台主机有多个 IP 时),可以设定只监听某一个 IP、埠号的联机。
例如,我们可以设定只接受客户端连到 192.168.0.1 的连接埠 8000,则可以设定为 192.168.0.1:8000。
Listen 80
LoadModule 动态加载的模块
Apache Dynamic Shared Object (DSO) 允许我们在启动 Apache 时动态加载模块,例如加载认证模块、PHP 模块等。在这个区段中,您可以看到 Apache 加载了很多模块。我们之后在设定虚拟主机、目录模限控制时,都必须检查 Apache 是否有加载我们想要的模块。这个部份的设定只要保持默认值即可。
LoadModule access_module libexec/apache2/mod_access.so
LoadModule auth_module libexec/apache2/mod_auth.so
LoadModule auth_anon_module libexec/apache2/mod_auth_anon.so
LoadModule auth_dbm_module libexec/apache2/mod_auth_dbm.so
... 略 ...
ExtendedStatus 显示详细状态信息
Apache 有一个 CGI 可以显示 Apache 服务器的状态信息 (server-status),当 ExtendedStatus 打开后,会显示更多信息。我们会在本章下一小节中说明如何使用这些信息。
#ExtendedStatus On
User Group 设定执行时的使用者及群组
系统要使用什么使用者名称及群组执行 Apache。使用 FreeBSD ports 安装后,预设的使用者及群组为 www。
User www
Group www
ServerAdmin 设定邮件
设定您的 Email。这个 Email 会显示在一些由 Apache 所产生的页面中。例如,当使用者连到一个不存在的网页、或是网页发生错误时,Apache 会秀出您所设定的 Email。
ServerAdmin you@example.com
ServerName 设定主机名称
ServerName 可以让您设定您的主机名称,如果您没有主机名称,可以设定为您机器所使用的 IP。ServerName 会被用来重新转向网址,例如,当您输入一个网址 「http://www.example.com/dir」时,Apache 会参考您在 ServerName 中的设定,将 www.example.com 改成 ServerName,并在您所输入的网址后加上一个斜线「/」以连到 dir 目录中,也就是将网址转向到「http://www.example.com/dir/」。如果您的网址设定不正确,则使用者可能会连到一个不存在的地址。
所以,如果您没有主机名称,可以将这个值设定为 IP,让网址转向后还是可以连到正确的地方。在 ServerName 的设定中,我们也指定了 HTTP 的连接埠 80。
如果您的服务器是位于 NAT 后面,使用 NAT 做 Port Forwarding,建议不要设定这个项目,改将下一个设定选项 UseCanonicalName 设为 On,才不会在转向网址时导到错误的位置。
ServerName www.example.com:80
UseCanonicalName 设定导向网址的方式
Apache 在导向网址时,会参考您所设定的服务器名称及端口号,但当主机使用 NAT Port Forwarding 时,主机名称及端口号可能会不同,这时候我们必须将这个选项设为 On,以免 Apache 转向到错误的地址。
UseCanonicalName Off
DocumentRoot 设定网页根目录
DocumentRoot 可以让我们指定网页根目录的位置,也就是我们存放网页的目录。除非您有使用 symbolic links 或是 aliases,否则所有的网页都会放在这个目录中。
DocumentRoot "/usr/local/www/data"
设定目录权限
接下来的几个区段中,您会看到   的设定。这个设定是用来指定某个目录的存取权限,例如是否允许执行 CGI、是否要列出该目录下的所有档案等等。
我们以之前所设定的网页根目录「DocumentRoot」为例,当您修改了网页根目录后,您也必须将这个区段中的  改成您的网页目录。由于 Apache 将一般的网页和 CGI 分别放在不同的目录,所以您的 DocumentRoot 设定和这里的设定稍有不同。但您可以将  及 DocumentRoot 都改成 /home/www。
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
我们后续再来说明一下   这个区段中每个项目的用途。
Options 设定目录可以使用的功能
我们在   中指定了要设定哪一个目录后,可以再使用 Option 来设定该目录可以使用哪些功能。以下为功能的列表及说明:

  • All:允许使用除了 MultiViews 以外的所有功能,此项目为默认值。
  • ExecCGI:允许在此目录中执行 CGI。
  • FollowSymLinks:允许在目录中使用 Symbolic links。使用者可以在此目录中建一个 symbolic link 连结到网页根目录以外的地方。例如,如果你在网页根目录中建一个 symbolic link 到 /etc/master.passwd,则使用 http://192.168.0.1/master.passwd 就可以看到 /etc/master.passwd 的内容。建议您将这个项目移除,以避免安全性问题产生。
  • Includes:允许使用 Server-side includes (SII)。
  • IncludesNOEXEC:允许使用 SII,但不可以使用 #exec 去执行系统指令或是 CGI。
  • Indexes:当目录中没有 DirectoryIndex 所设定的网页时 (如 index.html),是否要由 Apache 自动产生目录中的档案列表。除非您的网页是要开放改使用者下载档案,并希望由 Apache 产生档案列表,否则建议您关闭这项功能。
  • MultiViews:允许使用 Content negotiated 的功能,自动经由服务器和 Client 的内容协商,决定要使用哪一种语言的档案。
  • SymLinksIfOwnerMatch:如果 symbolic link 所指向的档案拥有者符合 Apache 执行的使用者,则允许使用 symbolic link。

当我们对目录设定 Option 的项目后,它的子目录也会继承该目录的设定值。如果我们同时设定一个目录及其子目录的 Option 的设,会以最接近的目录设定为主。例如,我们为 /home/www 及 /home/www/photo 设定权限如下:
    Options Indexes FollowSymLinks
    Options Includes
我们设定了 /home/www 可以使用 Indexes 及 FollowSymLinks,但 /home/www/photo 只能使用 Includes。虽然 /home/www/photo 是 /home/www 的子目录,但是其目录的设定只会以自己的 Options 为主,也就是不具有 Indexes 及FollowSymLinks,只有 Includes 的权限。
如果您希望子目录可以继承上一层的设定,可以使用 + 及 - 的符号表示。例如:
    Options Indexes FollowSymLinks
    Options +Includes -Indexes
我们在 /home/www/photo 的 Option 中使用了 + 及 -,所以它会继承 /home/www 的设定,但是加上 Includes 的功能,并取消 Indexes,所以最后 /home/www/photo 的权限就是 Includes 及 FollowSymLinks。
AllowOverride 设定 .htaccess 中可以使用的项目
Apache 允许使用者对于目录中使用 .htaccess 文件来控制权限,例如使用密码保护、设定权限等。我们会在下一章中说明如何使用 .htaccess 来做密码保护。
您可以将 AllowOverride 设成 All 或 None 来表示允许或不允许。或者,您也可以指定只允许下列某几个功能:

  • AuthConfig:允许设定不同的认证方式。
  • FileInfo:允许设定档案类型。
  • Indexes:允许设定列出目录索引时所要使用的选项。
  • Limit:允许使用 Allow、Deny、Order 来设定存取权限。
  • Options:允许设定目录权限。

Order 设定 Allow 及 Deny 的顺序
我们可以在目录中设定允许 (Allow) 及拒绝 (Deny) 的规则先后顺序,当二者抵触时,以后者为主。以下列范例为例,我们先设定了 Order 为 Deny, Allow,再设定拒绝所有联机,但只允许 192.168.0.2 来存取 /home/www/mp3。
    Order Deny,Allow
    Deny from all
    Allow from 192.168.0.2
UserDir 设定使用者个人网页
在 mod_userdir 区段中,包含了使用者个人网页的设定。使用者可以使用 http://www.example.com/~username 连到个人网页。预设的设定是每个使用者都可以在自己的家目录中建立一个名为 putblic_html 的目录,该目录就使用者的个人网页目录。UserDir 这个项目即定义了使用者个人网页的路径名称。如果您觉得这个名称太长,更改它的设定,但记得要修改  中的相对设定。
如果您不想让使用者有个人网页,可以将这个区段前面使用 # 批注起来。
UserDir public_html
UserDir disabled root toor daemon ..... pop www nobody mailnull smmsp
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   
        Order allow,deny
        Allow from all
   
   
        Order deny,allow
        Deny from all
   
DirectoryIndex 设定预设网页档名
当使用者使用网址「http://www.example.com/dir」连到一个目录中时,如果没有指定网页,Apache 会去查找 DirectoryIndex 中所设定的网页在不在,如果存在则秀出预设的网页。
预设的网页只有二个,我们可以再加上 index.htm、index.php 等常用的网页:
DirectoryIndex index.php index.htm index.html index.html.var
HostnameLookups 设定将客户端 IP 转为 hostname
是否要在 Apache 的记录文件中将 Client 的 IP 转成 hostname。由于将 IP 转成 hostname 需要一点时间,将这个功能设为 On 会造成联机的效率变慢很多。
HostnameLookups Off
ErrorLog 指定错误记录文件位置
设定 Apache 错误讯息的记录文件位置。
ErrorLog /var/log/httpd-error.log
CustomLog 指定联机记录文件位置
设定 Apache 联机记录文件的位置。
CustomLog /var/log/httpd-access.log combined
Alias 设定别名
我们可以为一个目录或联机的 URI 设定别名,以简化目录名称。例如,您可以将 /home/alex/mp3/ 取一个别名为 /mp3/,让使用者在联机到
http://www.example.com/mp3/
时,指向 /home/alex/mp3/。
Alias /mp3/ /home/alex/mp3/
别名可以设定很多个,您可以依需求简化连结的位置。设定的别名目录不一定要是 DocumentRoot 的子目录,我们可以指定网页根目录以外的目录。
file:///D:/jackpig/freebsd/FreeBSD综合教程/FreeBSD6.0架设管理与应用/images/note.png
小提示
为了精准起见,我们使用 /mp3/ 而非 /mp3,以免将 /mp3files 变成了 /home/alex/mp3files。也就是多加了一个 "/" 在 mp3 之后。
AliasMatch 使用常规表示的别名
除了一般的别名外,我们还可以使用常规表示来设定别名。例如,我们要设定所有要使用 *.php 的档案都连到 /usr/local/php 目录中,则可以使用:
AliasMatch ^(.+\.php)$ /usr/local/php$1
ScriptAlias 设定 CGI 目录
ScriptAlias 可以让我们设定 CGI 的所在目录,它的功用其实看 Alias 差不多。下面的范例就是当使用者要连到 http://www.example.com/cgi-bin/ 时,我们将 cgi-bin 指向 /usr/local/www/cgi-bin/ 目录中。
ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"
ErrorDocument 指定错误讯息页面
当使用者连到一个不存在的网页,或是网页发生错误时,Apache 预设会帮我们产生一个错误讯息的网页。我们可以修改这个设定,以秀出我们自己设定的页面。例如,当您连到 YAHOO! 时,如果网页不存在,它的页面中还是秀出一些 YAHOO 自己的信息。
在 ErrorDocument 之后,首先要加的是错误代码。错误代码 404 在 HTTP 协议中表示找不到页面。在下列设定中,我们设定当找不到页面时,就秀出 /missing.html。/missing.html 的「/」指的并非系统的根目录,而是您网页的根目录。
ErrorDocument 404 /missing.html
file:///D:/jackpig/freebsd/FreeBSD综合教程/FreeBSD6.0架设管理与应用/images/note.png
小提示
修改 httpd.conf 是调校 Apache 的第一步,更多关于 Apache 的调校,可以参考 Apache 的使用手册,或是参考
http://httpd.apache.org/docs/2.0/misc/perf-tuning.html



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/54045/showart_1010416.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP