Apache的基本设置主要交由httpd.conf来设定管理,咱们要修改Apache的相关设定,主要仍是经过修改httpd.cong来实现。下面让咱们来看看httpd.conf的内容,它主要分红3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
这表示Apache是以standalone启动,也能够是inetd。所谓standalone是指启动一次来接听全部的连线;而inetd是接到http的连线要求才启动,随着连线的结束而结束,这样负担是否是很但呢?因此通常都是以standalone启动。
·ServerRoot "/usr/local/httpd"
此为apache的目录
·#LocdFile /use/local/httpd/logs/httpd.lock
保留预设值,不更动
·PidFile /usr/local/httpd/logs/httpd.pid
此文件记录着apache的父处理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存储处理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
因为咱们统筹由httpd.conf来管理,因此这两个文件预设是注解起来的,能够保留预设值不更动
·Timeout 300
设盯超时的时间。若是用户端超过300秒还没连上server,或server超过300秒还没传送信息给用户端,即断线。
·KeepAlive On
容许用户端的连线有多个请求,设为Off表示不容许
·MaxKeepAliveRequests 100
每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,若是实际的数目少于此数目,则会增长处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,若是你的网站需求量很大,能够将此数目设大一些,大不要随便将此数目设得太大。
·StartServers 5
启动时Server的数目
MaxClients 150
限制同时间最大的连线数目,固然不能设得过小,一旦达到此数目,就没法再增长用户端
·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的链接端口或IP
·BindAddress *
能够接听*(全部IP地址)、指定的IP地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO模块
·#ExtendedStatus On
可检阅apache的状态信息,预设是Off(注解起来)
【第二部分】
若是以前的ServerType是inetd,请直接跳到ServerAdmin。
·Port 80
Standalone服务器接听的链接端口,固然也能够是其余小于1023的端口号
·User nobody
·Group nobody
执行httpd的用户和群组
·ServerAdmin 管理员的电子邮件地址
这是管理员的电子邮件地址,若是apache有问题的话,会寄信通知管理员,固然你也能够创建一个专门负责web的账号来收信
·ServerName 你的主机名称
此为主机名称,若是没有域名,也能够用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目录为apache放置网页的地方,里面的index.html即为连到此主机的预设首页
·
Options FollowSymLinks
AllowOverride none
此目录设定用户放置网页的目录(public_html)的执行动做。详细的目录存取方法会在后面说明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目录设定apache的网页目录(htdocs)的执行动做
·UserDir public_html
用户可在本身的目录下创建public_html目录来放置网页,输入http://主机地址/~用户名称便可链接到...劳撤胖玫牡胤?/a>
·DirectoryIndex index.html
这里设定预设主页的名称
·AccessFileName .htaccess
这个是控制存取的文件名称,通常采用预设的.htaccess名称,后面会说明htaccess的使用方法
·
Order allow,deny
Deny from all
这用来防止其余人看到.ht开头的文件内容,不只是保护.htaccess的内容,还保护.htpasswd的内容。固然也能够直接写成。若是你有更改AccessFilename,例如将.htaccess改为.accessht,请记得也要在此作相关的更改,如此才能防止其余人看到哦
·#CacheNegotiatedDocs
注解起来是告诉Proxy不要将互动产生的文件存入cache,若是拿掉#,则会存在cache中
·UseCanonicalName On
使用标准的名称,预设是On。假设有一个web server的全名是www.sample.com,通常称为www;若是us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件类型的文件。你能够自行编辑mime.types文件。
·DefaultType text/plain
当server不认得此文件类型时的预设格式,此设定是当成通常文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模块可以使server由文件内容决定其MIME类型。若是有载入mod_mime_magic模块,才会处理MIMEMagicFile这一段。若是是…,则表示若是没有载入该模块,才会处理这一段
·HostLookups Off
若是为On,则每次都会向name server解析该IP,记录此连线的名称(例如www.apache.org)自换岷牟簧偈奔洌...为Off,仅记录IP
·ErrorLog /usr/local/httpd/logs/error_log
指定发生错误的记录文件(error_log)位置。若是在没有指定发生错误的记录文件,则会沿用此文件
·LogLevel warn
记录分红不少等级,在此是warn。各等级以下: 等级 说明
debug debug信息
info 普通讯息
notice 重要信息
warn 警告信息
error 发生错误
crit 紧急状况
alert 立刻要处理的状况
amerg 系统快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四种记录格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的记录文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表示未使用这三个文件
·ServerSignature On
设为On时,在server所产生的网页(像是错误发生时)上,会有apache的版本、主机、链接端口的一行信息;若是设为Email,则会有mailto:给管理员的超连接
·Alias /icons/ "/usr/local/httpd/icons/"
使用较短的别名,其格式为:Alias 别名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias同样,只是这是设定server script的目录
·IndexOptions FancyIndexing
显示好看的文件清单(配合下面各文件所对应的图形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
这些是在显示文件清单(以前所说的FancyIndex)时,各类文件类型的对应图形。例如.ps .si .eps这三种文件的表示图形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
这些是在显示文件清单时,在文件后面附上说明,其格式为:
AddDescription "说明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
显示文件清单时,在最下面显示README的文件内容
设置CGI脚本/将httpd.conf作为惟一的配置文件/用户受权和访问控制等
关于Apache的配置及使用,在LinuxAid中已经有很多文章作了详细的阐述,本文讨论了在使用Apache时,有关配置文件的使用及对文件的访问控制等内容,算是对Apache的使用所作的一些补充吧!
若是您对Apache有必定的了解,特别是对几个配置文件有必定的了解,这将会有助于您对本文内容的理解;若是恰巧您不是很了解这几个配置文件的使用,那么就借着这个机会来一块儿熟悉一下吧。
1、关于CGI执行脚本的配置
这里有两种设置CGI脚本的方法。第1、CGI的脚本文件以.cgi为扩展名;第2、设置脚本可执行目录。可是这两种方法都须要将要执行的文件设置为711,才能够被执行。
第一种方法,咱们须要在access.conf文件种将你要发行的目录设置为Option ExecCGI All,在srm.conf资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在全部的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,不管给文件在你发行目录的任何一个地方均可以作为CGI被Apache服务器调用。这种方法通常没有第二种方法安全。
第二种方法,是将一个目录做为一个可执行目录,将全部的cgi文件都放在其中,这里就不必定非得是以.cgi为扩展名得文件能够执行,而是只要有711属性的文件就能够被执行,并且其它的非可执行文件都被禁止访问。咱们的默认配置文件种就有一个很好的例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中的可执行文件均可以被Web服务器调用,而其它的非可执行文件将被拒绝访问。
2、配置用户的发行目录
这里有两种设置方法:
第一种是系统的默认方法,即用户目录下的public_html目录为用户的发行目录,且默认的主页文件为index.html,且该目录不支持CGI。
第二种是在其它目录种专门为用户设置发布目录,如我想在/home/html目录作为用户的web目录,那管理员就应该在该目录下为每个用户设置一个子目录,如:/home/html/user0一、/home/html/user02等。那么,你的srm.conf文件中的UserDir后面就不能再是public_html了,应该改成:UserDir /home/html/*/,注意这里的“*”表明anyone,当你再浏览器中请求一个如http://www.domain/~user01时,Apache...ndex.html文件。
这种设置不须要到access.conf中设置该目录的访问属性,还有,当咱们设置虚拟主机时也不用设置目录的访问属性,可是若是你想让某个目录具备CGI权限,都要到Access.conf文件中去配置目录的访问权限,如:你想让你的全部用户在他们的发布目录中具备CGI访问权,则须要在你的access.conf中这样设置:
Allow Override None
Options ExecCGI
注意这里设置用户目录中的cgi-bin子目录为cgi执行目录,这是一种安全的设置,并且也是一种UNIX的习惯。
3、如何将Apache服务器设置为inetd的子服务
当你安装了Apache后,默认设置为standalone方式运行,若是你想将它设置为inetd的子服务,首先在每次激活Linux时不激活httpd,而后编辑/etc/inetd.conf,在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
而后从新激活inetd服务器。这样你用ps -aux命令查看进程运行状况时,你不会发现httpd的进程的存在,可是一旦有客户请求一个页面时,inetd就激活一个httpd进程为该请求服务,以后就自动释放,这种运行方式有助于节省系统资源,可是若是你的web服务很重要,通常不建议设置为这种方式运行。
4、将httpd.conf作为惟一的配置文件
在Apache中给用户提供了三个配置文件: srm.conf、 access.conf 和 httpd.conf files。实际上这三个文件是平等的,全部的配置均可以放在一个单独的httpd.conf文件中,事实上在Apache 1.3.2中就已经这样作了,在httpd.conf中应包括如下两条指令来防止Apache对srm.conf和access.conf两个配置文件的访问:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注释掉如下这两行便可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
5、用户受权和访问控制
你也许在访问某些网站时会遇到过这样的状况,当你点击某个链接时,你的浏览器会弹出一个身份验证的对话框,要求输入帐号及密码,若是没有,就没法继续浏览了。有人会觉得这是用CGI作出来的,其实否则,这是WWW服务器的用户受权和访问控制机制在发挥做用。
你是否还记得在设置Apache服务环境的过程当中,有……..<./Directory>这个指令,能够对不一样的目录提供不一样的保护。可是这样的设定,须要从新启动服务器才会生效,灵活性较差,经过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤以下:
一、首先对httpd.conf文件进行设置以下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 必定要设置为All,这样后面的.htaccess文件才会起做用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制权限的文件名称
AccessFileName .htaccess
二、建立.htaccess文件內容
要控制某目录的访问权限必须创建一访问控制文件,文件名前面指定的“.htaccess”,其内容格式以下:
AuthUserFile 用户账号密码文件名
AuthGroupFile 群组账号密码文件名
AuthName 画面提示文字
AuthType 验证方式
密码验证方式
用户验证方式AuthType目前提供了Basic和Digest两种。
密码检验设定方法与httpd.conf中的相关设定相同。
具体例子以下:
AuthUserFile /etc/secure.user
AuthName 安全认证中心
AuthType Basic
require valid-user
三、创建用户密码文件
若是你是第一次建立用户密码,命令格式以下:
htpasswd -c 密码文件名 用户名称
在上面的例子中,咱们将用户密码文件放到了/etc/secure.user文件中,因此这里应按照以下进行操做:
htpasswd -c /etc/secure.user sword
程序会提示你输入两次用户的口令,而后用户密码文件就已经建立sword这个用户也添加完毕了。
若是要向密码文件中添加新的用户,按照以下命令格式进行操做:
htpasswd 密码文件 用户名称
这样,从新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。
四、如何减小访问控制对Apache性能的影响
频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减小这种影响呢?最简单也是最有效的方法之一就是减小.htaccess文件的数目,这样能够避免Apache对每个请求都要按照.htaccess文件的内容进行受权检查。它不只在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
一般在根目录下没有htaccess文件,但Apache仍然会进行例行检查以肯定该文件确实不存在。这是影响很影响服务器工做效率的事情。下面的方法能够消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的AllowOverride选项设为None,只将须要进行访问控制的目录下的AllowOverride选项设置为all,以下面的例子中将/根目录的AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提升服务效率的目的。
AllowOverride None
AllowOverride Allhtml
Apache的基本设置主要交由httpd.conf来设定管理,咱们要修改Apache的相关设定,主要仍是经过修改httpd.cong来实现。下面让咱们来看看httpd.conf的内容,它主要分红3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
这表示Apache是以standalone启动,也能够是inetd。所谓standalone是指启动一次来接听全部的连线;而inetd是接到http的连线要求才启动,随着连线的结束而结束,这样负担是否是很但呢?因此通常都是以standalone启动。
·ServerRoot "/usr/local/httpd"
此为apache的目录
·#LocdFile /use/local/httpd/logs/httpd.lock
保留预设值,不更动
·PidFile /usr/local/httpd/logs/httpd.pid
此文件记录着apache的父处理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存储处理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
因为咱们统筹由httpd.conf来管理,因此这两个文件预设是注解起来的,能够保留预设值不更动
·Timeout 300
设盯超时的时间。若是用户端超过300秒还没连上server,或server超过300秒还没传送信息给用户端,即断线。
·KeepAlive On
容许用户端的连线有多个请求,设为Off表示不容许
·MaxKeepAliveRequests 100
每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,若是实际的数目少于此数目,则会增长处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,若是你的网站需求量很大,能够将此数目设大一些,大不要随便将此数目设得太大。
·StartServers 5
启动时Server的数目
MaxClients 150
限制同时间最大的连线数目,固然不能设得过小,一旦达到此数目,就没法再增长用户端
·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的链接端口或IP
·BindAddress *
能够接听*(全部IP地址)、指定的IP地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO模块
·#ExtendedStatus On
可检阅apache的状态信息,预设是Off(注解起来)
【第二部分】
若是以前的ServerType是inetd,请直接跳到ServerAdmin。
·Port 80
Standalone服务器接听的链接端口,固然也能够是其余小于1023的端口号
·User nobody
·Group nobody
执行httpd的用户和群组
·ServerAdmin 管理员的电子邮件地址
这是管理员的电子邮件地址,若是apache有问题的话,会寄信通知管理员,固然你也能够创建一个专门负责web的账号来收信
·ServerName 你的主机名称
此为主机名称,若是没有域名,也能够用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目录为apache放置网页的地方,里面的index.html即为连到此主机的预设首页
·
Options FollowSymLinks
AllowOverride none
此目录设定用户放置网页的目录(public_html)的执行动做。详细的目录存取方法会在后面说明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目录设定apache的网页目录(htdocs)的执行动做
·UserDir public_html
用户可在本身的目录下创建public_html目录来放置网页,输入http://主机地址/~用户名称便可链接到...劳撤胖玫牡胤?/a>
·DirectoryIndex index.html
这里设定预设主页的名称
·AccessFileName .htaccess
这个是控制存取的文件名称,通常采用预设的.htaccess名称,后面会说明htaccess的使用方法
·
Order allow,deny
Deny from all
这用来防止其余人看到.ht开头的文件内容,不只是保护.htaccess的内容,还保护.htpasswd的内容。固然也能够直接写成。若是你有更改AccessFilename,例如将.htaccess改为.accessht,请记得也要在此作相关的更改,如此才能防止其余人看到哦
·#CacheNegotiatedDocs
注解起来是告诉Proxy不要将互动产生的文件存入cache,若是拿掉#,则会存在cache中
·UseCanonicalName On
使用标准的名称,预设是On。假设有一个web server的全名是
www.sample.com,通常称为www;若是us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件类型的文件。你能够自行编辑mime.types文件。
·DefaultType text/plain
当server不认得此文件类型时的预设格式,此设定是当成通常文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模块可以使server由文件内容决定其MIME类型。若是有载入mod_mime_magic模块,才会处理MIMEMagicFile这一段。若是是…,则表示若是没有载入该模块,才会处理这一段
·HostLookups Off
若是为On,则每次都会向name server解析该IP,记录此连线的名称(例如
www.apache.org)自换岷牟簧偈奔洌...为Off,仅记录IP
·ErrorLog /usr/local/httpd/logs/error_log
指定发生错误的记录文件(error_log)位置。若是在没有指定发生错误的记录文件,则会沿用此文件
·LogLevel warn
记录分红不少等级,在此是warn。各等级以下: 等级 说明
debug debug信息
info 普通讯息
notice 重要信息
warn 警告信息
error 发生错误
crit 紧急状况
alert 立刻要处理的状况
amerg 系统快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四种记录格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的记录文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表示未使用这三个文件
·ServerSignature On
设为On时,在server所产生的网页(像是错误发生时)上,会有apache的版本、主机、链接端口的一行信息;若是设为Email,则会有mailto:给管理员的超连接
·Alias /icons/ "/usr/local/httpd/icons/"
使用较短的别名,其格式为:Alias 别名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias同样,只是这是设定server script的目录
·IndexOptions FancyIndexing
显示好看的文件清单(配合下面各文件所对应的图形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
这些是在显示文件清单(以前所说的FancyIndex)时,各类文件类型的对应图形。例如.ps .si .eps这三种文件的表示图形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
这些是在显示文件清单时,在文件后面附上说明,其格式为:
AddDescription "说明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
显示文件清单时,在最下面显示README的文件内容
设置CGI脚本/将httpd.conf作为惟一的配置文件/用户受权和访问控制等
关于Apache的配置及使用,在LinuxAid中已经有很多文章作了详细的阐述,本文讨论了在使用Apache时,有关配置文件的使用及对文件的访问控制等内容,算是对Apache的使用所作的一些补充吧!
若是您对Apache有必定的了解,特别是对几个配置文件有必定的了解,这将会有助于您对本文内容的理解;若是恰巧您不是很了解这几个配置文件的使用,那么就借着这个机会来一块儿熟悉一下吧。
1、关于CGI执行脚本的配置
这里有两种设置CGI脚本的方法。第1、CGI的脚本文件以.cgi为扩展名;第2、设置脚本可执行目录。可是这两种方法都须要将要执行的文件设置为711,才能够被执行。
第一种方法,咱们须要在access.conf文件种将你要发行的目录设置为Option ExecCGI All,在srm.conf资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在全部的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,不管给文件在你发行目录的任何一个地方均可以作为CGI被Apache服务器调用。这种方法通常没有第二种方法安全。
第二种方法,是将一个目录做为一个可执行目录,将全部的cgi文件都放在其中,这里就不必定非得是以.cgi为扩展名得文件能够执行,而是只要有711属性的文件就能够被执行,并且其它的非可执行文件都被禁止访问。咱们的默认配置文件种就有一个很好的例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中的可执行文件均可以被Web服务器调用,而其它的非可执行文件将被拒绝访问。
2、配置用户的发行目录
这里有两种设置方法:
第一种是系统的默认方法,即用户目录下的public_html目录为用户的发行目录,且默认的主页文件为index.html,且该目录不支持CGI。
第二种是在其它目录种专门为用户设置发布目录,如我想在/home/html目录作为用户的web目录,那管理员就应该在该目录下为每个用户设置一个子目录,如:/home/html/user0一、/home/html/user02等。那么,你的srm.conf文件中的UserDir后面就不能再是public_html了,应该改成:UserDir /home/html/*/,注意这里的“*”表明anyone,当你再浏览器中请求一个如
http://www.domain/~user01时,Apache...ndex.html文件。
这种设置不须要到access.conf中设置该目录的访问属性,还有,当咱们设置虚拟主机时也不用设置目录的访问属性,可是若是你想让某个目录具备CGI权限,都要到Access.conf文件中去配置目录的访问权限,如:你想让你的全部用户在他们的发布目录中具备CGI访问权,则须要在你的access.conf中这样设置:
Allow Override None
Options ExecCGI
注意这里设置用户目录中的cgi-bin子目录为cgi执行目录,这是一种安全的设置,并且也是一种UNIX的习惯。
3、如何将Apache服务器设置为inetd的子服务
当你安装了Apache后,默认设置为standalone方式运行,若是你想将它设置为inetd的子服务,首先在每次激活Linux时不激活httpd,而后编辑/etc/inetd.conf,在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
而后从新激活inetd服务器。这样你用ps -aux命令查看进程运行状况时,你不会发现httpd的进程的存在,可是一旦有客户请求一个页面时,inetd就激活一个httpd进程为该请求服务,以后就自动释放,这种运行方式有助于节省系统资源,可是若是你的web服务很重要,通常不建议设置为这种方式运行。
4、将httpd.conf作为惟一的配置文件
在Apache中给用户提供了三个配置文件: srm.conf、 access.conf 和 httpd.conf files。实际上这三个文件是平等的,全部的配置均可以放在一个单独的httpd.conf文件中,事实上在Apache 1.3.2中就已经这样作了,在httpd.conf中应包括如下两条指令来防止Apache对srm.conf和access.conf两个配置文件的访问:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注释掉如下这两行便可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
5、用户受权和访问控制
你也许在访问某些网站时会遇到过这样的状况,当你点击某个链接时,你的浏览器会弹出一个身份验证的对话框,要求输入帐号及密码,若是没有,就没法继续浏览了。有人会觉得这是用CGI作出来的,其实否则,这是WWW服务器的用户受权和访问控制机制在发挥做用。
你是否还记得在设置Apache服务环境的过程当中,有……..<./Directory>这个指令,能够对不一样的目录提供不一样的保护。可是这样的设定,须要从新启动服务器才会生效,灵活性较差,经过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤以下:
一、首先对httpd.conf文件进行设置以下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 必定要设置为All,这样后面的.htaccess文件才会起做用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制权限的文件名称
AccessFileName .htaccess
二、建立.htaccess文件內容
要控制某目录的访问权限必须创建一访问控制文件,文件名前面指定的“.htaccess”,其内容格式以下:
AuthUserFile 用户账号密码文件名
AuthGroupFile 群组账号密码文件名
AuthName 画面提示文字
AuthType 验证方式
密码验证方式
用户验证方式AuthType目前提供了Basic和Digest两种。
密码检验设定方法与httpd.conf中的相关设定相同。
具体例子以下:
AuthUserFile /etc/secure.user
AuthName 安全认证中心
AuthType Basic
require valid-user
三、创建用户密码文件
若是你是第一次建立用户密码,命令格式以下:
htpasswd -c 密码文件名 用户名称
在上面的例子中,咱们将用户密码文件放到了/etc/secure.user文件中,因此这里应按照以下进行操做:
htpasswd -c /etc/secure.user sword
程序会提示你输入两次用户的口令,而后用户密码文件就已经建立sword这个用户也添加完毕了。
若是要向密码文件中添加新的用户,按照以下命令格式进行操做:
htpasswd 密码文件 用户名称
这样,从新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。
四、如何减小访问控制对Apache性能的影响
频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减小这种影响呢?最简单也是最有效的方法之一就是减小.htaccess文件的数目,这样能够避免Apache对每个请求都要按照.htaccess文件的内容进行受权检查。它不只在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
一般在根目录下没有htaccess文件,但Apache仍然会进行例行检查以肯定该文件确实不存在。这是影响很影响服务器工做效率的事情。下面的方法能够消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的AllowOverride选项设为None,只将须要进行访问控制的目录下的AllowOverride选项设置为all,以下面的例子中将/根目录的AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提升服务效率的目的。
AllowOverride None
AllowOverride All
DocumentRoot "/usr/local/apache/htdocs" #设置存放站点html文件的目录。 Options FollowSymLinks AllowOverride None #设置/目录的指令。具体地说明: Option:定义在目录内所能执行的操做。 None:表示只能浏览, FollowSymLinks:容许页面链接到别处, ExecCGI:容许执行CGI, MultiViews:容许看动画或是听音乐之类的操做, Indexes:容许服务器返回目录的格式化列表, Includes:容许使用SSI。这些设置能够复选。 All:则能够作任何事,但不包括MultiViews。 AllowOverride:加None参数表示任何人均可以浏览该目录下的文件。 另外的参数有:FileInfo、AuthConfig、Limit。