欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是网络协议方面的经验知识教程:用Apache构建WEB服务器(二),下面是详细的分享!
用Apache构建WEB服务器(二)
NameVirtualHost 192.166.1.101
ServerAdmin [email?protected]
DocumentRoot /home/httpd/www.new1.com
ServerName www.new1.com
ErrorLog /var/log/httpd/www.company1.com/error.log
ServerAdmin [email?protected]
DocumentRoot /home/httpd/www.new2.com
ServerName www.new2.com
ErrorLog /var/log/httpd/www.new2.com/error.log
也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 192.166.1.101而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个虚拟主机服务。
最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了
配置CGI
1. 什么是CGI
CGI是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开发语言来实现,包括C、C++、Perl、Shell脚本甚至Java。
WEB服务器从客户端得到某个URL,它告诉WEB服务器,必须运行一个CGI外部应用程序。那么WEB服务器启动这一应用程序,等待它完成并返回输出结果。最后,它将此应用程序的输出结果传输给另一端的WEB客户。
2. 为CGI配置Apache
那么如何使Apache能处理CGI请求呢?我们必须通过相应的配置过程告知Apache在哪里存储CGI程序,指明CGI程序的扩展等,以下我们逐一介绍一下设置的内容与步骤。
创建存储CGI程序的目录
创建集中的CGI程序目录只是建立CGI环境的开始。如果要考虑提高安全
性的话,应将集中的CGI程序目录保存在DocumnetRoot目录外,使得访问者不能直接访问CGI程序。
第一步:在DocumentRoot目录外创建一个目录,然后将所有的CGI程序都集中存放在这个目录下。例如,你可创建一个/home/httpd/public/apps的目录作为CGI程序的大本营。
第二步:为CGI程序目录创建别名,也就是编辑配置文件httpd.conf,加入:
ScriptAlias /cgi-bin/
/home/httpd/public/apps
这样做后,当客户访问www.xxx.com/cgi-bin/li.cgi时,WEB服务器就会自动执行WEB服务器上的/home/httpd/public/apps/li.cgi文件。
第三步:为CGI目录设置合适的权限,一般是只允许Apache有读取和执行的权限但没有写的权限。
允许用户访问cgi-bin
我如何给用户开辟个人主页空间,但如果你的 用户需要使他的主页更具有活力,往往会向你申请cgi-bin访问服务。下面我们就介绍一个Apache服务器为用户提供的两种cgi-bin访问方法。
使用Directory或DirectoryMatch容器
当在配置文件srm.conf中用UserDir命令被赋值为目录名称时,Apache就
把它作为用户WWW站点的顶层目录。例如:
UserDir Public_html
当Apache接到www.xxx.com/~user的请求,就到/home/user/Public_html取出主页发送给客户。
如果要为每个用户添加CGI支持就在Apache的配置文件access.conf中添加下列配置:
Options ExecCGI
AddHandler cgi-script .cgi .pl
注:将DirectoryMatch换成Directory亦可
在这种方法中,Apache服务器将www.xxx.com/~user/cgi-bin请求翻译成为了/home/user/Public_html/cgi-bin/,并允许执行任何带有正确扩展名(.cgi或.pl)的CGI程序。
使用ScriptAliasMatch命令
通过使用ScriptAliasMatch命令,也可以为每个用户添加CGI支持。例如:
ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2
这个命令将用户名与$1相匹配,其中$1与~([a-z]+)相等。将/cgi-bin/后面的任何内容与$2相匹配,其中$2与(.*)相等。
这个设置也就实现了将www.xxx.com/~user/cgi-bin/xxx.cgi请求解释为:
/home/user/Public_html/cgi-bin/xxx.cgi
那么大家想一想,如果你想将这个请求解释为:
/home/httpd/public/apps/xxx.cgi
该如何设置呢?对,应该是:
ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/httpd/public /apps/$2
3.Apache为CGI提供的环境变量
Apache服务器提供了许多环境变量可以用于CGI程序的编写,了解它们也一定有助于写出充分利用Apache的CGI程序,所以在此也对此作一简单介绍。
服务器变量
服务器变量由Apache设置用来通知CGI程序有关Apache的情况。通过使用这些变量,CGI程序能确定有关服务器的不同信息:Apache的版本,管理员的E-Mail地址等。
SERVER_SOFTWARE
这个变量是WWW服务器Apache的版本号,它的值形如:Apache/Version,如Apache/1.3;
GATEWAY_INTERFACE
这个变量的值是当前CGI规范的版本号,其值形如:CGI/1.1;
SERVER_ADMIN
如果在httpd.conf文件中有设置站点管理员的e-mail地址的话,这个变量就会存放着这个e-mail地址;
DOCUMENT_ROOT
这个变量存放在是被访问的WWW站点的DocumentRoot命令指定的值。
客户请求变量
Apache提供的有关客户请求方的环境变量有许多,以下只是有选择性地介绍一些最常见的。
SERVER_NAME
此变量可以告诉CGI程序它访问的是哪一个主机。这个值可以是IP地址也可以是完整的主机名;
HTTP_ACCEPT
此变量被赋值为客户所能接受的MIME类型的列表,如:HTTP_ACCEPT=image/gif;
HTTP_ACCEPT_CHARSET
此变量被赋值为客户所能接受的字符集,如:
HTTP_ACCEPT_CHARASET=iso-8859-1.,*,utf-8;
HTTP_ACCEPT_LANGUAGE
此变量被赋值为客户所能接受的语言,如:HTTP_ACCEPT_LANGUAGE=en;
HTTP_ACCEPT_AGENT
这个变量指定发出请求的系统正在运行的浏览器类型和操作系统;
HTTP_PORT:服务端口;
REMOTE_HOST:客户端的IP地址或IP名称信息;
REMOTE_PORT:客户端的端口号;
4. 一点提示
若干年来,通过网关接口(CGI)已成为服务器端应用程序开发的事实标准。但随着时间的推移,发现在沉重的CGI负担下许多WWW服务器系统的表现不尽人意。这是因为CGI规范存在瓶颈问题:每当客户系统请求CGI应用程序时,WWW服务器就必须启动新的CGI进程,直到完成任务后结束进程。这在负载不高时,会工作正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。
所以现在开始出现新的标准来弥补这一不足,其中FastCGI是很有前途的一种新的开放式标准。
你可以在Apache中通过添加mod_fastcgi.c模块来支持FastCGI。
建立Apache站点的基本安全机制
对于WWW服务来说,在WWW服务器和WWW浏览器之间并不始终维持对话过程。办要WWW服务器完成对一个URL请求的服务,连接就断开了。
在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的站点或特点的站点的一部分。
这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。
1. 基于主机的认证方式
在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该模块用以下几种Apache命令来提供访问控制功能。
allow命令
语法:allow from host1 host2 host3 ...
这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几种形式表示:
ALL:代表所有主机;
主机的全域名,如:www.mycom;
主机的部分域名,如:.my.com;
完整的IP地址,如:192.166.1.102;
部分IP地址,如:192.166网络地址/网络掩码对,网络地址/nn(CIDR定义)
deny命令
语法:deny
from host1 host2 host3 ...
这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。
order命令
语法:order deny,allow | allow,deny
这个命令定义评价allow和deny命令的先后顺序。
例如:
order deny,allow
deny from www.my.com
allow all
以上就是关于用Apache构建WEB服务器(二)的网络协议知识分享,更多电脑教程请移步到>>电脑教程。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
