📄 1297.html
字号:
f/access.conf。在较新的apache版本中,建议你只使用一个配置文件,即/etc/httpd/<br>
conf/httpd.conf。我们将主要的讨论比较新的这种配置方式。我的版本是apache-1.3.<br>
9。特别需要注意的是,如果你的系统配置目录中除了httpd.conf之外还有srm.conf和a<br>
ccess.conf的话,那么系统缺省要去察看这两个文件。因此,建议你将这两个文件从系<br>
统上删除。<br>
<br>
/etc/httpd/conf/httpd.conf文件相当长,我们首先介绍基本的内容,在设置apache<br>
的工作中,第一个任务是设置html文档的位置。<br>
<br>
新的httpd.conf一般被分成几个段落,第一部分是全局变量的位置,按照我们习惯的<br>
方式,将在缺省的httpd.conf上进行必要的修改,下面列出一些我们比较感兴趣的选择<br>
:<br>
<br>
ServerType<br>
<br>
这个选项用来设置你的apache如何启动,它有两个选择,即standalone和inetd。sta<br>
ndalone表示你的服务器程序是直接作为服务器守护进程启动,而inetd表示apache服务<br>
器将在inetd程序中启动。一般我们总是建议用standalone方式,因为inetd在请求较多<br>
的时候会出现一些问题。即使用ServerType standalone子句。<br>
<br>
ServerRoot "/home/httpd"<br>
<br>
设置Apache的缺声运行路径。不过,除非你在某些配置选项中使用相对路径,否则它<br>
从来不会影响什么。<br>
<br>
ErrorLog<br>
<br>
CustomLog <br>
<br>
<br>
这两行设置缺省的记账文件的位置,errorlog和customlog分别是出错信息和正常工作<br>
信息的记录地点,例如<br>
<br>
ErrorLog /var/log/httpd/error_log<br>
<br>
CustomLog /var/log/httpd/access_log common<br>
<br>
Port<br>
<br>
这个参数指明http服务器使用的端口,缺省值是80,当然你也可以选择其他的端口,<br>
但是这意味着你在连接的时候必须明确地指出使用的端口。<br>
<br>
范例:<br>
<br>
Port 80<br>
<br>
User<br>
<br>
Group<br>
<br>
设置服务器运行时使用的身份,通常我们为了安全,总是要把它设置成nobody,如:<br>
<br>
User nobody<br>
<br>
Group nobody<br>
<br>
ServerAdmin<br>
<br>
这个选项用来设置当服务器出现问题时,用来反馈问题的邮件地址,例如<br>
<br>
ServerAdmin webmaster@mydomain.com<br>
<br>
<br>
ServerName<br>
<br>
通常apache服务器会从域名服务信息中得到服务器的域名,但是你也可以使用这个选<br>
项来避免域名服务器出错时apache失效。例如<br>
<br>
ServerName www.mydomain.com<br>
<br>
DocumentRoot <br>
<br>
这个选项设置缺省的服务器使用的html文件的位置,例如:下面的一行<br>
<br>
DocumentRoot "/home/httpd/html"<br>
<br>
意味着 http://www.mydomain.com/xxx.html 被解释为/home/httpd/html/xxx.html。<br>
<br>
ScriptAlias <br>
<br>
定义CGI脚本目录,例如<br>
<br>
ScriptAlias /cgi-bin/ “/home/httpd/cgi-bin”<br>
<br>
定义CGI脚本应该放在/home/httpd/cgi-bin/目录下,而反映在浏览器中的目录是/cg<br>
i-bin/。<br>
<br>
DirectoryIndex <br>
<br>
这个选项定义缺省的主页文件,例如,DirectoryIndex index.html意味着http://ww<br>
w.mydomain.com/将显示/home/httpd/html/index.html。<br>
<br>
index.html<br>
<br>
Alias<br>
<br>
建立目录别名,例如<br>
<br>
Alias /ftp/ “/home/httpd/html/ftp/”<br>
<br>
UserDir<br>
<br>
用宿主目录作为html目录。参考6.3.2节。<br>
<br>
AccessFileName<br>
<br>
定义身份控制的文件名,通常总是设置成为AccessFileName .htaccess<br>
<br>
AddType<br>
<br>
AddHandler<br>
<br>
这两个选项用来加入各种文件映射,或者说MIME类型。通常AddType设定某种特定的文<br>
件类型对应某个特定的扩展名字,而AddHandler则为这种类型定义一个处理程序。例如<br>
,AddHandler cgi-script .cgi表示无论在什么地方,凡是看上去是一个.cgi的扩展名<br>
的程序就作为CGI脚本执行(应该避免,对吗?不过对于那些~user的目录你可能只能用<br>
这个办法了。好在还有一个options ExecCGI也对可以执行cgi的目录进行限制)<br>
<br>
另外的一个常用的设定是<br>
<br>
AddType text/html .shtml<br>
<br>
AddHandler server-parsed .shtml<br>
<br>
这两行允许服务器处理那些.shtml并且将它翻译成html送出。<br>
<br>
显然,我们现在的任务主要是修改DocumentRoot和ScriptAlias,DirectoryIndex,写<br>
一个简单的html文件,放到缺省的主页目录里,例如/home/httpd/html/index.html,设<br>
置其属性为755,然后就可以启动apache了:<br>
<br>
/usr/sbin/apachectl start<br>
<br>
或者<br>
<br>
/usr/sbin/httpd<br>
<br>
如果是重新启动apache,执行/usr/sbin/apachectl restart或者killall –HUP ht<br>
tpd。然后在浏览器中就可以实验页面服务是否可以使用了。如果apache抱怨找不到htt<br>
pd.conf,可以执行<br>
<br>
httpd –f /etc/httpd/httpd.conf<br>
<br>
<br>
6.3.1 目录管理<br>
<br>
如同其他所有的网络服务一样,Apache同样使用各种安全性控制,例如存取地址控制<br>
和身份控制。这里我们先讲地址和目录控制。<br>
<br>
Apache将目录作为单元来进行存取控制,每个目录在/etc/httpd/conf/httpd.conf中<br>
使用一个段落,首先的是/目录,这实际是设置缺省值:<br>
<br>
<Directory /><br>
<br>
Options FollowSymLinks<br>
<br>
AllowOverride None<br>
<br>
</Directory><br>
<br>
每个段落都是由这样的两组尖括号构成的行夹起来的,其中最主要的句子是Options,<br>
AllowOverride,Allow/Deny,Order等。<br>
<br>
Options<br>
<br>
这个子句用来说明一些主要的设置,目前可以使用的设置有Indexes,Includes,Fol<br>
lowSymLinks,ExecCGI,MultiView,当然还有两个最简单的选择就是None和All。None<br>
是禁止所有选择,而All允许上面的所有Options。一般我们主要关心的是Indexes和Fol<br>
lowSymLinks。Indexes是设定是否允许在目录下面没有index.html的时候显示目录,而<br>
FollowSymLinks决定是否可以通过符号连接跨越DocumentRoot。例如,尽管/ftp不在/h<br>
ome/httpd/html下面,但是我们仍然可以使用符号连接建立一个/home/httpd/html/ftp<br>
使得可以直接输入http://mydomain.com/ftp来访问这个目录。<br>
<br>
使用FollowSymLinks的办法很简单,就是首先在合适的目录段落里面Options Follow<br>
SymLinks,(符号连接的上层就可以)然后建立一个别名:<br>
<br>
Alias /ftp/ “home/httpd/html/ftp/”<br>
<br>
后面的是你建立的到/ftp的符号连接。注意这一行应该位于所有目录段落之外。<br>
<br>
AllowOverride<br>
<br>
AllowOverride定义是否允许各个目录用目录中的.htaccess(后面解释)覆盖这里设定<br>
的Options。它的选择有Options,FileInfo,AuthConfig,Limit或者它们的组合,当然<br>
还有None和All。<br>
<br>
由于/是缺省设置,所以这里没有设置太多的内容,相反,我们应该在/之后独立设置<br>
各个目录的控制,例如:<br>
<br>
<Directory "/home/httpd/html"><br>
<br>
Options Indexes FollowSymLinks<br>
<br>
AllowOverride None<br>
<br>
Order allow,deny<br>
<br>
Allow from all<br>
<br>
</Directory><br>
<br>
出现了两个新的选项:Order和Allow。<br>
<br>
Order<br>
<br>
它有两种用法,即Order allow,deny或者Order deny,allow。简单地说,它用来设置<br>
是先执行deny还是先执行allow,例如,Order deny,allow意味着先看deny行,再看all<br>
ow行,这样如果deny from all再allow from 202.112.58.0/24后来的allow子句就会超<br>
越deny而对202.112.58.x打开访问。<br>
<br>
Allow/Deny from<br>
<br>
这两个选项和Order一起使用,Allow允许某个地址来的连接请求,Deny则禁止这个请<br>
求,例如在Order deny,allow的情况下,Deny from all,Allow from 192.168.12.0/<br>
24表示只有192.168.12.x的用户可以访问这个目录。<br>
<br>
<br>
现在我们来看看下面的一个设定:<br>
<br>
UserDir public_html<br>
<br>
<Directory /home/*/public_html><br>
<br>
AllowOverride FileInfo AuthConfig Limit<br>
<br>
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec<br>
<br>
<Limit GET POST OPTIONS PROPFIND><br>
<br>
Order allow,deny<br>
<br>
Allow from all<br>
<br>
</Limit><br>
<br>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK><br>
<br>
Order deny,allow<br>
<br>
Deny from all<br>
<br>
</Limit><br>
<br>
</Directory><br>
<br>
这个有什么用处?UserDir是一个特殊的选项,用来在用户的宿主目录下设置主页,比<br>
如,有一个名字叫wanghy的用户,其宿主目录是/home/wanghy,而且UserDir象我们刚才<br>
那样设定,那么,你可以在浏览器中输入http://www.mydomain.com/~wanghy,它将对应<br>
的是宿主目录+UserDir,也就是/home/wanghy/public_html。当然,为了使这个功能生<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -