荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: freeson (I like Linux!!), 信区: Linux
标  题: 配置Apache服务器 (二)
发信站: 荔园晨风BBS站 (Sun Sep 23 12:45:24 2001), 转信

配置Apache服务器 (二)

转 01-04-13 14:48 651p null
----------------------------------------------------------------------
----------


主服务器设置

  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的端口。

  User nobody
  Group nogroup
  User和Group配置是Apache的安全保证,Apache在打开端口之后,就将其本
身设置为这两个选项设置的用户和组权限进行运行,这样就降低了服务器的危险
性。这个选项也只用于 Standalone模式,inetd模式在inetd.conf中指定运行
Apache的用户。由于服务器必须执行改变身份的setuid()操作,因此初始进程应
该具备root权限,如果是使用非root用户来启动Aapche,这个配置就不会发挥作
用。
  缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了
服务器本身和由它启动的CGI 进程没有权限更改文件系统。在某些情况下,例如
为了运行CGI与Unix交互,也需要让服务器来访问服务器上的文件,如果仍然使
用nobody和nogroup,那么系统中将会出现属于nobody的文件,这对于系统安全
是不利的,因为其他程序也会以nobody和nogroup的权限执行某些操作,就有可
能访问这些nobody拥有的文件,造成安全问题。一般情况下要为Web服务设定一
个特定的用户和组,同时在这里更改用户和组设置。

  ServerAdmin you@your.address
  配置文件中应该改变的也许只有ServerAdmin, 这一项用于配置WWW服务器
的管理员的email地址,这将在HTTP服务出现错误的条件下返回给浏览器,以便
让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为
WWW服务器的管理员,通过邮件服务器的别名机制,将发送到webmaster 的电子
邮件发送给真正的Web管理员。

  #ServerName new.host.name
  缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解

析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不

正确),或者没有正式的DNS名字,也可以在这里指定IP地址。当ServerName设

置不正确的时候,服务器不能正常启动。
  通常一个Web服务器可以具有多个名字,客户浏览器可以使用所有这些名字
或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,服务器总是以自
己的正式名字回应浏览器。ServerName就定义了Web服务器自己承认的正式名字
,例如一台服务器名字(在DNS中定义了A类型)为exmaple.org.cn,同时为了方
便记忆还定义了一个别名(CNAME记录)为www.exmaple.org.cn,那么Apache自
动解析得到的名字就为example.org.cn,这样不管客户浏览器使用哪个名字发送
请求,服务器总是告诉客户程序自己为 example.org.cn。虽然这一般并不会造
成什么问题,但是考虑到某一天服务器可能迁移到其他计算机上,而只想通过更
改DNS中的www别名配置就完成迁移任务,所以不想让客户在其书签中使用 Linux
 记录下这个服务器的地址,就必须使用ServerName来重新指定服务器的正式名
字。

  DocumentRoot "/www/"
  DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序
请求的UR L就被映射为这个目录下的网页文件。这个目录下的子目录,以及使用

符号连接指出的文件和目录都能被浏览器访问,只是要在URL上使用同样的相对
目录名。

  注意,符号连接虽然逻辑上位于根文档目录之下,但实际上可以位于计算机

上的任意目录中,因此可以使客户程序能访问那些根文档目录之外的目录,这在

增加了灵活性的同时但减少了安全性。Apache在目录的访问控制中提供了
FollowSymLinks选项来打开或关闭支持符号连接的特性。

Options FollowSymLinks
AllowOverride None
  Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两

种方式来实现,一个是在设置文件 httpd.conf(或access.conf)中针对每个目

录进行设置,另一个方法是在每个目录下设置访问控制文件,通常访问控制文件

名字为.htaccess。虽然使用这两个方式都能用于控制浏览器的访问,然而使用
配置文件的方法要求每次改动后重新启动httpd守护进程,比较不灵活,因此主
要用于配置服务器系统的整体安全控制策略,而使用每个目录下的.htaccess文
件设置具体目录的访问控制更为灵活方便。
  Directory语句就是用来定义目录的访问限制的,这里可以看出它的标准语
法,为一个目录定义访问限制。上例的这个设置是针对系统的根目录进行的,设
置了允许符号连接的选项FollowSymLinks ,以及使用AllowOverride None表示
不允许这个目录下的访问控制文件来改变这里进行的配置,这也意味着不用查看
这个目录下的相应访问控制文件。
  由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,因此对

根目录的设置将影响到它的下级目录。注意由于AllowOverride None的设置,使

得Apache服务器不需要查看根目录下的访问控制文件,也不需要查看以下各级目

录下的访问控制文件,直至httpd.conf(或access.conf )中为某个目录指定了

允许Alloworride,即允许查看访问控制文件。由于Apache对目录访问控制是采
用的继承方式,如果从根目录就允许查看访问控制文件,那么Apache就必须一级
一级的查看访问控制文件,对系统性能会造成影响。而缺省关闭了根目录的这个
特性,就使得Apache从httpd.conf中具体指定的目录向下搜寻,减少了搜寻的级
数,增加了系统性能。因此对于系统根目录设置AllowOverride None不但对于系
统安全有帮助,也有益于系统性能。

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
  这里定义的是系统对外发布文档的目录的访问设置,设置不同的
AllowOverride选项,以定义配置文件中的目录设置和用户目录下的安全控制文
件的关系,而Options选项用于定义该目录的特性。
  配置文件和每个目录下的访问控制文件都可以设置访问限制,设置文件是由

管理员设置的,而每个目录下的访问控制文件是由目录的属主设置的,因此管理

员可以规定目录的属主是否能覆盖系统在设置文件中的设置,这就需要使用 啊
AllowOverride参数进行设置,通常可以设置的值为:
AllowOverride的设置 对每个目录访问控制文件作用的影响
All 缺省值,使访问控制文件可以覆盖系统配置
None 服务器忽略访问控制文件的设置
Options 允许访问控制文件中可以使用Options参数定义目录的选项
FileInfo 允许访问控制文件中可以使用AddType等参数设置
AuthConfig 允许访问控制文件使用AuthName,AuthType等针对每个用户的认证
机制,这使目录属主能用口令和用户名来保护目录 Limit 允许对访问目录的客
户机的IP地址和名字进行限制
  每个目录具备一定属性,可以使用Options来控制这个目录下的一些访问特
性设置,以下为常用的特性选项:

Options设置 服务器特性设置
All 所有的目录特性都有效,这是缺省状态
None 所有的目录特性都无效
FollowSymLinks 允许使用符号连接,这将使浏览器有可能访问文档根目录 (
DocumentRoot)之外的文档 SymLinksIfOwnerMatch 只有符号连接的目的与符号
连接本身为同一用户所拥有时,才允许访问,这个设置将增加一些安全性
ExecCGI 允许这个目录下可以执行CGI程序 Indexes 允许浏览器可以生成这个目
录下所有文件的索引,使得在这个目录下没有index.html(或其他索引文件)时
,能向浏览器发送这个目录下的文件列表
 此外,上例中还使用了Order、Allow、Deny等参数,这是Limit语句中用来根
据浏览器的域名和 IP地址来控制访问的一种方式。其中Order定义处理Allow和
Deny的顺序,而Allow、Deny则针对名字或IP进行访问控制设置,上例使用
allowfrom all,表示允许所有的客户机访问这个目录,而不进行任何限制。

  UserDir public_html
  当在一台Linux上运行Apache服务器时,这台计算机上的所有用户都可以有
自己的网页路径,形如 http://example.org.cn/~user,使用波浪符号加上用户
名就可以映射到用户自己的网页目录上。映射目录为用户个人主目录下的一个子
目录,其名字就用UseDir这个参数进行定义,缺省为public_html。如果不想为
正式的用户提供网页服务,使用DISABLED作UserDir的参数即可。

#
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#
# Order allow,deny
# Allow from all
#
#
# Order deny,allow
# Deny from all
#
#

  这里可以看到Directory的另一个用法,即可以通过简单的模式匹配方法,
针对分布在不同目录下的子目录定义访问控制权限。这样设置就需要Apache服务
器对每个路径进行额外的处理,因此就会降低服务器的性能,所以缺省情况并没
有打开这种访问限制。

  这里可以看到另外一个语句Limit,Limit语句就是用来针对具体的请求方法
来设定访问控制的,其中可以使用GET、POST等各种服务器支持的请求方法做Lim

it的参数,来设定对不同请求方法的访问限制。一般可以打开对GET、POST、
HEAD三种请求方法,而屏蔽其他的请求方法,以增加安全性。Limit语句中,可
以用Order 、Allow、Deny,Allow和Deny中可以使用匹配的方法针对域名和IP进
行限制,只是对于域名是从后向前匹配,对于IP地址则从前向后匹配。

  DirectoryIndex index.html
  很多情况下,URL中并没有指定文档的名字,而只是给出了一个目录名。那
么Apache服务器就自动返回这个目录下由DirectoryIndex定义的文件,当然可以
指定多个文件名字,系统会这个目录下顺序搜索。当所有由DirectoryIndex指定
的文件都不存在时,Apache服务器可以根据系统设置,生成这个目录下的所有文
件列表,提供用户选择。此时该目录的访问控制选项中的Indexes选项(Options
 Indexes )必须打开,以使得服务器能够生成目录列表,否则Apache将拒绝访
问。

  AccessFileName .htaccess
  AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.
htaccess,可以通过更改这个文件,来改变不同目录的访问控制限制。

Order allow,deny
Deny from all
  除了可以针对目录进行访问控制之外,还可以根据文件来设置访问控制,这

就是File语句的任务。使用File 语句,不管文件处于哪个目录,只要名字匹配
, 就必须接受相应的访问控制。这个语句对于系统安全比较重要,例如上例将
屏蔽所有的使用者不能访问.htaccess文件,这样就避免.htaccess中的关键安全
信息不至于被客户获取。

  #CacheNegotiatedDocs
  缺省情况下如果代理服务器和Apache服务器协商是否缓存其网页,Apache给

予否定的回答,不希望自己的网页被代理服务器缓存。然而这样就不能有效的利
用代理服务器的优势,因此可以设置CacheNegotiatieDocs 选项, 使得代理服
务器可以对网页进行缓存。然而即使不设置这个选项,有的代理服务器(或通过
调整设置)也能对网页进行缓存。

  UseCanonicalName On
  打开这个UseCanonicalName是Web服务器的标准做法,因为客户发送的大部
分请求都是对本服务器的引用,这样服务器就能使用ServerName和Port选项的设
置内容构建完整的URL,并回应客户,使浏览器能得到规范的URL。如果将这个参
数设置为Off,那么Apache将使用从客户请求中获得服务器的名字和端口值(支
持HTTP 1.1的客户的请求中将会有这些信息),重新构建URL。

  TypesConfig /usr/local/apache/etc/mime.types
  TypeConfig用于设置保存有不同的MIME类型数据的文件名,在Linux下缺省
设置为/usr/local/apache/etc/mime.types。

  DefaultType text/plain
  如果Web服务器不能决定一个文档的缺省类型,这通常表示文档使用了非标
准的后缀,那么服务器就使用 DefaultType定义的MIME类型将文档发送给客户浏
览器。这里的设置为text/plain,这样设置的问题是,如果服务器不能判断出文
档的MIME,那么大部分情况下这个文档为一个二进制文档,但使用 text/plain
格式发送回去,浏览器将在内部打开它而不会提示保存。因此建议将这个设置更
改为
application/octet-stream,这样浏览器将提示用户进行保存。

MIMEMagicFile /usr/local/apache/etc/magic
  除了从文件的后缀出发来判断文件的MIME类型之外,Apache还可以进一步分

析文件的一些特征,来判断文件的真实MIME类型。这个功能是由mod_mime_magic
 模块实现的,它需要一个记录各种MIME类型特征的文件,以进行分析判断。上
面的设置是一个条件语句,如果载入了这个模块,就必须指定相应的标志文件
magic的位置。


--
哈哈!freeson喜欢你!呀呀! freeson喜欢你!

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.222]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店