ServerType定义服务器的启动方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ServerType定义服务器的启动方式ServerType定义服务器的启动方式,缺省值为独立方式standalone,htt pd服务器将由其本身启动,并驻留在主机中监视连接要求。

在Linux下将在启动文件/etc/rc.d/rc.local/init.d/apache中自动启动Web服务器,这种方式是举荐设置。

启动Apache服务器的另一种方式是inet方式,使用超级服务器inetd 监视连接要求并启动服务器。

当需要使用inetd启动方式时,便需要更换为那个设置,并屏蔽/etc/rc.d/rc.local/init.d/apache文件,以及更换/etc/inetd.con f并重起inetd,那么Apache就能从inetd中启动了。

ServerRoot "/etc/httpd"
ServerRoot用于指定守护进程httpd的运行名目,httpd在启动之后将自动将进程的当前名目改变为那个名目,因此如果设置文件中指定的文件或名目是相对路径,那么真实路径就位于那个ServerRoot定义的路径之下。

LockFile /var/run/httpd.lock
由于httpd会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS文件系统在文件加锁方面能力有限,因此那个名目应该是本地磁盘文件系统,而不应该使用NFS文件系统。

LockFile参数指定了httpd守护进程的加锁文件,一样不需要设置那个参数,Apache 服务器将自动在ServerRoot下面的路径中进行操作。

但如果ServerRoot为NFS文件系统,便需要使用那个参数指定本地文件系统中的路径。

PidFile /var/run/httpd.pid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对那个进程发送信号将阻碍所有的httpd进程。

PidFILE定义的文件中就记录httpd父进程的进程号。

ScoreBoardFile logs/apache_runtime_status
httpd使用ScoreBoardFile来爱护进程的内部数据,因此通常不需要改变那个参数,除非治理员想在一台运算机上运行几个Apache服务器,这时
每个Apache服务器都需要独立的设置文件httpd.conf,并使用不同的Score BoardFile
Timeout 300
Timeout定义客户程序和服务器连接的超时刻隔,超过那个时刻间隔(秒)后服务器将断开与客户机的连接。

KeepAlive Off
在HTTP 1.0中,一次连接只能作传输一次HTTP要求,而KeepAlive 参数用于支持HTTP 1.1版本的一次连接、多次传输功能,如此就能够在一次连接中传递多个HTTP要求。

尽管只有较新的扫瞄器才支持那个功能,但依旧打开使用那个选项。

MaxKeepAliveRequests 100
MaxKeepAliveRequests为一次连接能够进行的HTTP要求的最大要求次数。

将其值设为0将支持在一次连接内进行无限次的传输要求。

事实上没有客户程序在一次连接中要求太多的页面,通常达不到那个上限就完成连接了。

KeepAliveTimeout 15
KeepAliveTimeout测试一次连接中的多次要求传输之间的时刻,如果服务器差不多完成了一次要求,但一直没有接收到客户程序的下一次要求,在间隔超过了那个参数设置的值之后,服务器就断开连接。

MinSpareServers 5
MaxSpareServers 20
在使用子进程处理HTTP要求的Web服务器上,由于要第一生成子进程才能处理客户的要求,因此反应时刻就有一点延迟。

然而,Apache服务器使用了一个专门技术来摆脱那个咨询题,这确实是预先生成多个空余的子进程驻留在系统中,一旦有要求显现,就赶忙使用这些空余的子进程进行处理,如此就不存在生成子进程造成的延迟了。

在运行中随着客户要求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTT P要求之后并不赶忙退出,而是停留在运算机中等待下次要求。

然而空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用
服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户要求,又能减少不必要的进程数量。

因此就能够使用参数MinSpareServers来设置最少的空余子进程数量,以及使用参数MaxSpareServers 来限制最多的闲暇子进程数量,余外的服务器进程副本就会退出。

按照服务器的实际情形来进行设置,如果服务器性能较高,同时也被频繁访咨询,就应该增大这两个参数的设置。

关于高负载的专业网站,这两个值应该大致相同,同时等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。

StartServers 8
StartServers参数确实是用来设置httpd启动时启动的子进程副本数量,那个参数与上面定义的MinSpareServers和MaxSpareServers参数有关,差不多上用于启动闲暇子进程以提升服务器的反应速度的。

那个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS pareSe rvers都没有意义。

MaxClients 2000
在另一方面,服务器的能力如何讲是有限的,不可能同时处理无限多的连接要求,因此参数Maxclient s就用于规定服务器支持的最多并发访咨询的客户数,如果那个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,如此对每个客户的反应就会减慢,并降低了整体的效率。

如果那个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接要求。

当服务器性能较高时,就能够适当增加那个值的设置。

关于专业网站,应该使用提升服务器效率的策略,因此那个参数不能超过硬件本身的限制,如果频繁显现拒绝访咨询现象,就讲明需要升级服务器硬件了。

关于非专业网站,不太在意对客户扫瞄器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也能够略微超过硬件条件来设置那个参数。

那个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于那个参数的设置。

MaxRequestsPerChild 1000
使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,如此造成的咨询题确实是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了运算机的大量处理能力。

因此最好的方式是一个子进程能够为多次连接要求服务,如此就不需要这些生成、退出进程的系统消耗,Apache就采纳了如此的方式,一次连接终止后,子进程并不退出,而是停留在系统中等待下一次服务要求,如此就极大的提升了性能。

但由于在处理过程中子进程要持续的申请和开释内存,次数多了就会造成一些内存垃圾,就会阻碍系统的稳固性,同时阻碍系统资源的有效利用。

因此在一个副本处理过一定次数的要求之后,就能够让那个子进程副本退出,再从原始的httpd进程中重新复制一个洁净的副本,如此就能提升系统的稳固性。

如此,每个子进程处理服务要求次数由MaxRe questPerChild定义。

缺省的设置值为30,那个值关于具备高稳固性特点的Linux系统来讲是过于保守的设置,能够设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。

LoadModule vhost_alias_module modules/mod_vhost_alias.so
<IfDefine HA VE_BANDWIDTH>
LoadModule bandwidth_module modules/mod_bandwidth.so
</IfDefine>
<IfDefine HA VE_THROTTLE>
LoadModule throttle_module modules/mod_throttle.so
</IfDefine>
LoadModule env_module modules/mod_env.so
LoadModule config_log_module modules/mod_log_config.so
LoadModule agent_log_module modules/mod_log_agent.so
LoadModule referer_log_module modules/mod_log_referer.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule status_module modules/mod_status.so LoadModule info_module modules/mod_info.so LoadModule includes_module modules/mod_include.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir_module modules/mod_dir.so LoadModule cgi_module modules/mod_cgi.so LoadModule asis_module modules/mod_asis.so LoadModule imap_module modules/mod_imap.so LoadModule action_module modules/mod_actions.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule anon_auth_module modules/mod_auth_anon.so LoadModule db_auth_module modules/mod_auth_db.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so
<IfDefine HA VE_PERL>
LoadModule perl_module modules/libperl.so
</IfDefine>
<IfDefine HA VE_PHP>
LoadModule php_module modules/mod_php.so
</IfDefine>
<IfDefine HA VE_PHP3>
LoadModule php3_module modules/libphp3.so
</IfDefine>
<IfDefine HA VE_PHP4>
LoadModule php4_module modules/libphp4.so
</IfDefine>
<IfDefine HA VE_DA V>
LoadModule dav_module modules/libdav.so
</IfDefine>
<IfDefine HA VE_ROAMING>
LoadModule roaming_module modules/mod_roaming.so
</IfDefine>
<IfDefine HA VE_SSL>
LoadModule ssl_module modules/libssl.so
</IfDefine>
<IfDefine HA VE_PUT>
LoadModule put_module modules/mod_put.so
</IfDefine>
<IfDefine HA VE_PYTHON>
LoadModule python_module modules/mod_python.so
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
ClearModuleList
AddModule mod_vhost_alias.c
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_BANDWIDTH>
AddModule mod_bandwidth.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_THROTTLE>
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_log_agent.c
AddModule mod_log_referer.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_so.c
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PERL>
AddModule mod_perl.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PHP>
AddModule mod_php.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PHP3>
AddModule mod_php3.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PHP4>
AddModule mod_php4.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_DA V>
AddModule mod_dav.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_ROAMING>
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_SSL>
AddModule mod_ssl.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PUT>
AddModule mod_put.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfDefine HA VE_PYTHON>
AddModule mod_python.c
</IfDefine>
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
Apache服务器的一个重要特性确实是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块能够动态加载入http服务程序中,而不必载入不需要的模块。

使用Apache的动态加载模块只需要设置好Load Module和AddModule参数就能够了,这种特性确实是Apache的DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍旧不是一个简单的情况,不适当的改动那个地点的设置就可能造成服务器不能正常启动。

因此如果不是要增加或减少服务器提供的功能,就不要改动那个地点的设置。

上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上专门多模块是没有必要的,不必要模块可不能被载入内存。

模块能够
静态连接到Apache 服务器内部,也能够如此动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,如此就以牺牲专门小的性能的同时,带来极大的灵活性。

因而动态可加载的能力依旧对性能有轻微的阻碍,因此能够重新编译A pache,将自己所需要的功能编译进Apache 服务器内部,能够让系统显得更为洁净,效率也有轻微的提升。

通常仅仅为了这一个目的就重新编译Ap ache是没有必要的,如果需要增加其他特性而重新编译Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache 服务器。

有的使用者更喜爱动态加载模块,那么也不妨全部都使用动态加载模块。

这些模块都被放置到/usr/local/apache/libexec/名目下,每个模块对应A pache服务器的一个特性。

详细讲明每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地点中进行讲明,而具体每个模块的功能及用法就需要查看Apache的文档。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
主服务器设置
Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。

关于使用虚拟主机的情形,除了在虚拟主机的定义项中覆盖的设置之外(有的设置必须重新定义),那个地点的设置也是虚拟主机的缺省设置。

Port 80
Port定义了Standalone模式下httpd守护进程使用的端口,标准端口是80。

那个选项只关于以独立方式启动的服务器才有效,关于以inetd方式启动的服务器则在inetd.conf中定义使用哪个端口。

在Unix下使用80端口需要root权限,一些治理员为了安全的缘故,认为httpd 服务器不可能没有安全漏洞,因而更情愿使用一般用户的权限来启动服务器,如此就不能使用80端口及其他小于1024的端口,而必须使用大于1024的端口来启动httpd,一样情形下8000或8080也是常用的端口。

而Apache httpd服务器本身能够在以root权限打开80端口后再改变
为一般用户身份进行运行,如此就减少了危险性,因而就不需要考虑那个安全咨询题。

然而如果一般用户也想安装配置自己的WWW服务器,那么就不得不使用大于1024的端口。

<IfDefine HA VE_SSL>
Listen 80
Listen 443
</IfDefine>
Listen参数能够指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP要求。

由于FreeBSD系统能够同时拥有多个IP地址,因此也能够指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP要求。

如果没有配置这一项,则服务器会回应对所有IP的要求。

即使使用了BindAddress参数,使得服务器只回应对一个IP地址的要求,然而通过使用扩展的Listen参数,仍旧能够让HTTP守护进程回应对其他IP地址的要求。

现在Listen参数的用法与上面的第二个例子相同。

这种比较复杂的用法要紧用于设置虚拟主机。

此后能够用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。

在HTTP 1.1中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。

User apache
Group apache
User和Group配置是Apache的安全保证,Apache在打开端口之后,就将其本身设置为这两个选项设置的用户和组权限进行运行,如此就降低了服务器的危险性。

那个选项也只用于Standalone模式,inetd模式在inet d.conf中指定运行Apache的用户。

由于服务器必须执行改变身份的setuid()操作,因此初始进程应该具备root权限,如果是使用非root用户来启动Aa pche,那个配置就可不能发挥作用。

缺省设置为nobody和nogroup,那个用户和组在系统中不拥有文件,保证了服务器本身和由它启动的CGI 进程没有权限更换文件系统。

在某些
情形下,例如为了运行CGI与Unix交互,也需要让服务器来访咨询服务器上的文件,如果仍旧使用nobody和nogroup,那么系统中将会显现属于no body的文件,这关于系统安全是不利的,因为其他程序也会以nobody和n ogroup的权限执行某些操作,就有可能访咨询这些nobody拥有的文件,造成安全咨询题。

一样情形下要为Web服务设定一个特定的用户和组,同时在那个地点更换用户和组设置。

ServerAdmin root@localhost
配置文件中应该改变的也许只有ServerAdmin,这一项用于配置WW W服务器的治理员的email地址,这将在HTTP服务显现错误的条件下返回给扫瞄器,以便让Web使用者和治理员联系,报告错误。

适应上使用服务器上的webmaster作为WWW服务器的治理员,通过邮件服务器的不名机制,将发送到webmaster 的电子邮件发送给真正的Web治理员。

ServerName localhost
缺省情形下,并不需要指定那个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有咨询题(通常为反向解析不正确),或者没有正式的DNS名字,也能够在那个地点指定IP地址。

当ServerName设置不正确的时候,服务器不能正常启动。

DocumentRoot "/var/web/www/html"
DocumentRoot定义那个服务器对外公布的超文本文档存放的路径,客户程序要求的URL就被映射为那个名目下的网页文件。

那个名目下的子名目,以及使用符号连接指出的文件和名目都能被扫瞄器访咨询,只是要在URL上使用同样的相对名目名。

注意,符号连接尽管逻辑上位于根文档名目之下,但实际上能够位于运算机上的任意名目中,因此能够使客户程序能访咨询那些根文档名目之外的名目,这在增加了灵活性的同时但减少了安全性。

Apache在名目的访咨询操纵中提供了FollowSymLinks选项来打开或关闭支持符号连接的特性。

Apache服务器能够针对名目进行文档的访咨询操纵,访咨询操纵能够通过两种方式来实现,一个是在设置文件httpd.conf(或access.conf)中针对每个名目进行设置,另一个方法是在每个名目下设置访咨询操纵文件,通常访咨询操纵文件名字为.htaccess。

尽管使用这两个方式都能用于操纵扫瞄器的访咨询,然而使用配置文件的方法要求每次改动后重新启动httpd守护进程,比较不灵活,因此要紧用于配置服务器系统的整体安全操纵策略,而使用每个名目下的.htaccess
文件设置具体名目的访咨询操纵更为灵活方便。

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Directory语句确实是用来定义名目的访咨询限制的,那个地点能够看出它的标准语法,为一个名目定义访咨询限制。

上例的那个设置是针对系统的根名目进行的,设置了承诺符号连接的选项FollowSymLinks ,以及使用AllowOverride None表示不承诺那个名目下的访咨询操纵文件来改变那个地点进行的配置,这也意味着不用查看那个名目下的相应访咨询操纵文件。

由于Apache对一个名目的访咨询操纵设置是能够被下一级名目继承的,因此对根名目的设置将阻碍到它的下级名目。

注意由于AllowOverride None的设置,使得Apache服务器不需要查看根名目下的访咨询操纵文件,也不需要查看以下各级名目下的访咨询操纵文件,直至httpd.conf(或acce ss.conf )中为某个名目指定了承诺Alloworride,即承诺查看访咨询操纵文件。

由于Apache对名目访咨询操纵是采纳的继承方式,如果从根名目就承诺查看访咨询操纵文件,那么Apache就必须一级一级的查看访咨询操纵文件,对系统性能会造成阻碍。

而缺省关闭了根名目的那个特性,就使得Ap ache从httpd.conf中具体指定的名目向下搜寻,减少了搜寻的级数,增加了系统性能。

因此关于系统根名目设置AllowOverride None不但关于系统安全有关心,也有益于系统性能。

<Directory "/var/web/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
那个地点定义的是系统对外公布文档的名目的访咨询设置,设置不同的AllowOverride选项,以定义配置文件中的名目设置和用户名目下的安全操纵文件的关系,而Options选项用于定义该名目的特性。

配置文件和每个名目下的访咨询操纵文件都能够设置访咨询限制,设置文件是由治理员设置的,而每个名目下的访咨询操纵文件是由名目的属主设置的,因此治理员能够规定名目的属主是否能覆盖系统在设置文件中的设置,这就需要使用AllowOverride参数进行设置,通常能够设置的值为:
每个名目具备一定属性,能够使用Options来操纵那个名目下的一些访咨询特性设置,以下为常用的特性选项:
此外,上例中还使用了Order、Allow、Deny等参数,这是Limit语句中用来按照扫瞄器的域名和IP地址来操纵访咨询的一种方式。

其中Ord er定义处理Allow和Deny的顺序,而Allow、Deny则针对名字或IP进行访咨询操纵设置,上例使用allowfrom all,表示承诺所有的客户机访咨询那个名目,而不进行任何限制。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
UserDir public_html
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.phtml index.cgi index.htm1
</IfModule>
专门多情形下,URL中并没有指定文档的名字,而只是给出了一个名目名。

那么Apache服务器就自动返回那个名目下由DirectoryIndex定义的文件,因此能够指定多个文件名字,系统会那个名目下顺序搜索。

当所有由DirectoryIndex指定的文件都不存在时,Apache服务器能够按照系统设置,生成那个名目下的所有文件列表,提供用户选择。

现在该名目的访咨询操纵选项中的Indexes选项(Options Indexes )必须打开,以使得服务器能够生成名目列表,否则Apache将拒绝访咨询。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
AccessFileName .htaccess
AccessFileName定义每个名目下的访咨询操纵文件的文件名,缺省为.htaccess,能够通过更换那个文件,来改变不同名目的访咨询操纵限制。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
除了能够针对名目进行访咨询操纵之外,还能够按照文件来设置访咨询操纵,这确实是File语句的任务。

使用File 语句,不管文件处于哪个名目,只要名字匹配,就必须同意相应的访咨询操纵。

那个语句关于系统安全比较重要,例如上例将屏蔽所有的使用者不能访咨询.htaccess文件,如此就幸免.htaccess中的关键安全信息不至于被客户猎取。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
CacheNegotiatedDocs
缺省情形下如果代理服务器和Apache服务器协商是否缓存其网页,A pache给予否定的回答,不期望自己的网页被代理服务器缓存。

然而如此就不能有效的利用代理服务器的优势,因此能够设置CacheNegotiatieDocs 选项,使得代理服务器能够对网页进行缓存。

然而即使不设置那个选项,有的代理服务器(或通过调整设置)也能对网页进行缓存。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
UseCanonicalName On
打开那个UseCanonicalName是Web服务器的标准做法,因为客户发送的大部分要求差不多上对本服务器的引用,如此服务器就能使用ServerNa me和Port选项的设置内容构建完整的URL,并回应客户,使扫瞄器能得到
规范的URL。

如果将那个参数设置为Off,那么Apache将使用从客户要求中获得服务器的名字和端口值(支持HTTP 1.1的客户的要求中将会有这些信息),重新构建URL。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfModule mod_mime.c>
TypesConfig /etc/mime.types
</IfModule>
TypeConfig用于设置储存有不同的MIME类型数据的文件名,在Linu x下缺省设置为/usr/local/apache/etc/mime.types。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
DefaultType text/plain
如果Web服务器不能决定一个文档的缺省类型,这通常表示文档使用了非标准的后缀,那么服务器就使用DefaultType定义的MIME类型将文档发送给客户扫瞄器。

那个地点的设置为text/plain,如此设置的咨询题是,如果服务器不能判定出文档的MIME,那么大部分情形下那个文档为一个二进制文档,但使用text/plain格式发送回去,扫瞄器将在内部打开它而可不能提示储存。

因此建议将那个设置更换为application/octet-stream,如此扫瞄器将提示用户进行储存。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
除了从文件的后缀动身来判定文件的MIME类型之外,Apache还能够进一步分析文件的一些特点,来判定文件的真实MIME类型。

那个功能是由mod_mime_magic 模块实现的,它需要一个记录各种MIME类型特点的
文件,以进行分析判定。

上面的设置是一个条件语句,如果载入了那个模块,就必须指定相应的标志文件magic的位置。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
HostnameLookups Off
通常连接时,服务器仅仅能够得到客户机的IP地址,如果要想获得客户机的主机名,以进行日志记录和提供给CGI程序使用,就需要使用那个HostnameLookups 选项,将其设置为On打开DNS反查功能。

然而这将使服务器对每次客户要求都进行DNS查询,增加了系统开销,使得反应变慢,因此缺省设置为使用Off关闭此选项。

关闭选项之后,服务器就可不能获得客户机的主机名,而只能使用IP地址来记录客户。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User -Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined
那个地点定义了系统日志的形式,关于服务器错误记录,由Erro rLog、LogLevel 来定义不同的错误日志文件及其记录内容。

关于系统的访咨询日志,缺省使用CustomLog参数定义日志的位置,缺省使用combined 参数指定将所有的访咨询日志放在一个文件中,然而也能够将不同种类的访咨询日志放在不同的日志记录文件中,这是通过在CustomLog中指定不同的记录类型来完成的。

common表示一般的对单页面要求访咨询记录,referer表示每个页面的引用记录,能够看出一个页面中包含的要求数,agent表示对客户机的类型记录,明显能够将现有的
combined 定义的设置行注释掉,并使用common、referer和agent作为Cus tomLog的参数,来为不同种类的日志分不指定日志记录文件。

明显,LogFormat是用于定义不同类型的日志进行记录时使用的格式,那个地点使用了以%开头的宏定义,以记录不同的内容。

如果这些参数指定的文件使用的是相对路径,那么确实是有关于S erverRoot的路径。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
ServerSignature On
一些情形下,例如当客户要求的网页并不存在时,服务器将产生错误文档,缺省情形下由于打开了ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息。

有的治理员更倾向于不对外显示这些信息,就能够将那个参数设置为Off,或者设置为Email,最后一行将替换为对ServerAdmin 的Email提示。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfModule mod_alias.c>
Alias /icons/ "/var/web/www/icons/"
<Directory "/var/web/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ "/var/web/www/cgi-bin/"
<Directory "/var/web/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</IfModule>
Alias参数用于将URL与服务器文件系统中的真实位置进行直截了当映射,一样的文档将在DocumentRoot 中进行查询,然而使用Alias定义的路径将直截了当映射到相应名目下,而不再到DocumentRoot 下面进行查询。

因此Alias能够用来映射一些公用文件的路径,例如储存了各种常用图标的icons路径。

如此使得除了使用符号连接之外,文档根名目(Documen tRoot)外的名目也能够通过使用了Alias映射,提供给扫瞄器访咨询。

定义好映射的路径之后,应该需要使用Directory语句设置访咨询限制。

ScriptAlias也是用于URL路径的映射,但与Alias的不同在于,Scri ptAlias 是用于映射CGI程序的路径,那个路径下的文件都被定义为CGI
程序,通过执行它们来获得结果,而非由服务器直截了当返回其内容。

缺省情形下CGI程序使用cgi-bin名目作为虚拟路径。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
Redirect old-URI new-URL
Redirect参数是用来重写URL的,当扫瞄器访咨询服务器上的一个差不多不存在的资源的时候,服务器返回给扫瞄器新的URL,告诉扫瞄器从该URL中猎取资源。

这要紧用于原先存在于服务器上的文档,改变了位置之后,而又期望能使用老URL能访咨询到,以保持与往常的URL兼容。

///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////
<IfModule mod_autoindex.c>
IndexOptions FancyIndexing NameWidth=*
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzi p。

相关文档
最新文档