- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安棋子儿 来源:黑客防线网安建站网 浏览次数:0 |
#AddType text/html .shtml
#AddHandler server-parsed .shtml
另外一种动态进行处理的类型为server-parsed,由服务器自身预先分析网页内的标记,把标记更改为正确的HTML标识。由于server- parsed需要对text/html 类型的文档进行处理,因此首先定义了对应的.shtml为text/html类型。
然而要支持SSI,还要首先要在配置文件(或.htaccess)中使用Options Includes允许该目录下的文档可以为SSI类型,或使用Options IncludesNOExec让执行普通的SSI标志,但不执行其中引用的外部程序。
另一种指定server-parsed类型的方式为使用XBitBack设置选项,如果把 XBitHack设置为On,服务器把检查所有text/html类型的文档(包括.html后缀的文档),如果发现文件属性具备执行位 “x",则服务器就认为它是服务器分析文档,需要服务器进行处理。推荐使用AddHandler进行设置,而把XBitBack 设置为Off,因为使用XBitBack把对所有的HTML文档都执行额外的检查,降低了效率。
#AddHandler send-as-is asis
#AddHandler imap-file map
#AddHandler type-map var
上面被注释的AddHandler用于支持Apache服务器的asis、map和var处理能力
# Action media/type /cgi-script/location
# Action handler-name /cgi-script/location
因为Apache内部提供的处理功能有限,因此可以使用Action为服务器定义外部程序作为可处理的动态文档类型,这些外部程序与标准CGI程序相同,都是对输入的数据处理之后,再输出不同MIME类型的结果。例如要定义一个对特殊后缀wri都先执行wri2txt进行处理操作,再返回结果的操作,可以使用:
Action windows-writer /bin/wri2txt
AddHandler windows-writer wri
更进一步,可以直接使用Action定义对某个MIME类型预先进行处理操作,这需要例子中第一种格式的Action 参数设置方式。这样设置方式就不再需要额外的AddHandler用来把处理操作与文件后缀联系起来,而是使用Action直接处理MIME类型的文件。但如果文档后缀没有正式的MIME类型,还需要先定义一个MIME类型。
#MetaDir .web
#MetaSuffix .meta
Meta 信息是在文档发送给客户之前,预先发送给客户浏览器一些数据,因此浏览器可以通过HEAD请求来访问这些Meta信息而不必真正通过GET来返回全部文档数据。服务器通常发送给浏览器的是一些标准的HTTP头信息,如果要想增加额外的信息,就需要使用MetaDir来定义Meta数据存放的目录,而MetaS uffix用于指定包含Meta数据的文件后缀。
#ErrorDocument 500 "The server made a boo boo.
#ErrorDocument 404 /missing.html
#ErrorDocument 404 /cgi-bin/missing_handler.pl
#ErrorDocument 402
如果客户请求的网页不存在,或者没有访问权限等情况发生时,服务器把产生一个错误代码,同时也把回应客户浏览器一个标识错误的网页。 ErrorDocument就用于设置当出现哪个错误时应该回应客户浏览器那些内容,ErrorDocument的第一个参数为错误的序号,第二个参数为回应的数据,可以为简单的文本,本地网页,本地CGI程序,以及远程主机上的网页。
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
BrowserMatch命令为特定的客户程序,设置特殊的参数,以保证对老版本浏览器的兼容性,并支持新浏览器的新特性。
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
## Deny from all
# ErrorDocument 403 http://www.apache.org/phf_abuse_log.cgi
用于设置访问控制的设置主要是针对目录和文件进行设置的,然而也可以针对不同的URL进行访问控制的设置,这样就不必担心ScriptAlias、 Alias是否把路径设置到了受控制的目录之外了。针对URL进行控制的语句为 Location语句,这样不但能对服务器上的文件、CGI提供保护,此外,它还能保护不能找到对应文件,而是由服务器本身提供的特殊功能URL。http://servername/server-status用于报告当前Apache服务器的状态,http://servername/server-info用于报告Apache 服务器的统计信息。与此相关的设置还有ExtendedStatus参数,可以让服务器输出更详细的的报告。
#ProxyRequests On
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#ProxyVia On
#CacheRoot "/www/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com
Apache服务器本身就具备代理的功能,然而这要求加载入mod_proxy模块。这能使用IfModule语句进行判断,如果存在mod_proxy模块,就使用 ProxyRequests打开代理支持。此后的Directory用于设置对Proxy功能的访问权限设置,以及用于设置缓冲的各个参数设置。
虚拟主机
#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error_log
# CustomLog logs/host.some_domain.com-access_log common
缺省设置文件中的这些内容是用于设置命名基础的虚拟主机服务器时使用。其中NameVirtualHost 来指定虚拟主机使用的IP地址,这个IP地址把对应多个 DNS名字,如果Apache使用了Listen 参数控制了多个端口,那么就可以在这里加上端口号以进一步进行区分对不同端口的不同连接请求。此后,使用 VirtualHost 语句,使用NameVirtualHost指定的IP地址作参数,对每个名字都定义对应的虚拟主机设置。
虚拟主机是在一台Web服务器上,可以为多个单独域名提供Web服务,并且每个域名都完全独立,包括具有完全独立的文档目录结构及设置,这样域名之间完全独立,不但使用每个域名访问到的内容完全独立,并且使用另一个域名无法访问其他域名提供的网页内容。
虚拟主机的概念非常有用,因为虽然一个组织可以把自己的网页挂在具备其他域名的服务器上的下级往址上,但使用独立的域名和根网址更为正式,易为众人接受。传统上,必须自己设立一台服务器才能达到单独域名的目的,然而这需要维护一个单独的服务器,很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机能力,使服务器为多个域名提供Web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。
有两种设定虚拟主机的方式,一种是基于HTTP 1.0标准,需要一个具备多IP地址的服务器,再配置DNS 服务器,给每个IP地址以不同的域名,最后才能配置Apache的配置文件,使服务器对不同域名返回不同的Web文档。由于这需要使用额外的IP地址,对每个要提供服务的域名都要使用单独的IP地址,因此这种方式实现起来问题较多。可以在一个网络界面上绑定多个IP地址,Linux下需要使用ifconfig的 alias参数来进行这个配置,但此时会影响网络性能。
HTTP 1.1标准在协议中规定了对浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置,为服务器增加多个C NAME选项,如:
linux IN A 192.168.1.64
vhost1 IN CNAME linux
vhost2 IN CNAME linux
基本的设置选项都是为了linux主机设定的,如果要为vhost1和vhost2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置。
NameVirtualHost 192.168.1.64
DocumentRoot /www/data
ServerName linux.example.org.cn
DocumentRoot /vhost1
ServerName vhost1.example.org.cn
DocumentRoot /vhost2
ServerName vhost2.example.org.cn
这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,必须保证所有的值严格一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机。
此外,定义过NameVirtualHost之后,那么对这个IP地址的访问都被区分不同的虚拟主机进行处理,而对其他IP地址的访问,例如127.0.0.1,才应用前面定义的缺省选项。
另外一些加速方法
1、 Web 页面和 CGI 页面采用了浏览器缓冲技术。具体的方法可以参考附录一:采用 mod_gzip 加速Apache
2、 不要让 X Windows 运行在你的 Web 服务器上,用 Ctrl-Alt-Backspace 关闭 X 。
3、 在 CGI 脚本中:
文件 I/O:打开的文件数目越少越好。
Shell 命令:采用全路径来调用 shell 命令。
在Web 页面目录中,不要让文件数超过 1000 个,文件越多花费在定位上的时间也越多。
4、 在 Web 服务器上的图片越少越好,保证每个图片都经由图片压缩器运行。
5、 应该配置尽量多的内存,内存的大小对系统性能影响非常大。
6、 可以用strace命令调试调用。
当你不确定httpd.conf里的设置更改对进程的影响时,strace或许能奏效,通过观察输出的行数,可以判断对一个固定页面访问时需要的调用数。如:
#ps –ef|grep http
#strace –p http_pid
accept(18, 0xFFBEF黑客防线0, 0xFFBEFA74, 1) = 3
fcntl(24, F_SETLKW, 0x001D0E10) = 0
sigaction(SIGUSR1, 0xFFBEF908, 0xFFBEF98 = 0
getsockname(3, 0xFFBEFA60, 0xFFBEFA74, 1) = 0
setsockopt(3, 6, 1, 0xFFBEF9C4, 4, 1) = 0
read(3, " G E T / c a s e i n c".., 4096) = 590
sigaction(SIGUSR1, 0xFFBED800, 0xFFBED880) = 0
time() = 1043377552
stat("/docroot/osc-new/www/caseincident/listCase.php", 0x0022BF5 = 0
umask(077) = 0
umask(0) = 077
setitimer(ITIMER_PROF, 0xFFBEF628, 0x00000000) = 0
sigaction(SIGPROF, 0xFFBEF4F8, 0xFFBEF57 = 0
sigprocmask(SIG_UNBLOCK, 0xFFBEF618, 0x00000000) = 0
getsockopt(6, 65535, 8192, 0xFFBE67B0, 0xFFBE67AC, 0) = 0
setsockopt(6, 65535, 8192, 0xFFBE67B0, 4, 0) = 0
setitimer(ITIMER_PROF, 0xFFBEF788, 0x00000000) = 0
sigaction(SIGUSR1, 0xFFBEF908, 0xFFBEF98 = 0
read(3, 0x001E5BC0, 4096) (sleeping...)
附录一、采用 mod_gzip 加速Apache
说明:本附录为全文引用,时间限制,未经测试。
我们知道 mod_gzip 是用来在服务器端把客户请求的内容压缩后发送给客户端的一个 Apache 模块。本站的 Zope 通过 FastCGI 来实现和 Apache 的结合,Apache 是解析 HTML 页面的服务程序。安装好 mod_gzip 后就即能压缩普通静态页面也能压缩 Zope 文档。
一、安装
http://www.hyperspacecommunications.com/products/mod_gzip.html
页面上有 mod_gzip 的二进制码版本和源码下载。如果你使用前者的话,直接把文件拷贝到 Apache Home 的 libexec 目录下就可以了。下载 mod_gzip.c 后,如果你的 Apache 用 DSO 模式安装的话,用下面简单的命令就可以安装了:
# /www/bin/apxs -i -a -c mod_gzip.c
二、配置
安装完毕以后把下列配置加入httpd.conf :
# mod_gzip 配置
LoadModule gzip_module libexec/mod_gzip.so
AddModule mod_gzip.c
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime "text/*"
# 压缩 Zope 的内容:
mod_gzip_item_include file "[^.]*$"
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php$"
mod_gzip_item_include file ".txt$"
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |