技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

apache使用详解

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件。接下来,我们通过一系列实验,来对其有一个更加深入的了解。 1.通过yum安装httpd服务[root@wh1 ~]# yum install httpd2.配置文件全局配置配置信息详解1) 配置持久连接... 全文

apache 流行

apache 配置成滚动日志

apache默认的日志只是1个文件,随着访问量的加大,该日志文件会越来越大,借助apache的rotatelogs.exe自动生成滚动日志。下面配置配置成每24小时产生1个新的日志文件:#先搭建1个很简单网站进行访问DocumentRoot E:/ApacheTestWeb<Directory E:/ApacheTestWeb>    AllowOverride None    Allow from all</Directory>#修改如下配置:CustomLog "|D:/Apache2.2/bin/rotatelogs.exe D:/Apache2.2/logs/access.log 86400" common... 全文

apache

Apache 整合 Tomcat

0.安装apache2.2./configure --prefix=/usr/local/apache --enable-so \ --enable-rewrite --with-mpm=worker make && make install1.安装jdktar zxvf jdk-7-linux-i586.gz mv jdk1.7.0 /usr/local/jdk /usr/local/jdk/bin/java --version2.安装tomcat7.0.37tar zxvf apache-tomcat-7.0.37.tar.gz mv apache-tomcat-7.0.37 /usr/local/tomcat vim /etc/profile export JAVA_HOME=/usr/local/jdk export PATH=$PATH:JAVA_HOME/bin:/usr/local/apache/bin:/usr/local/tomcat/bin export CLASSPATH=$JAVA_HOME/lib source /etc/profile /usr/local/tomcat/bin/catalina.sh start netstat -an | grep :80803.Apache与Tomcat整合(1).安装jk2 tar zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz cd /root/src/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/ ./configure --with-apxs2=/usr/local/apache/bin/apxs make cd ../build/jk2/apache2/ /usr/local/apache/bin/apxs -n jk2 -i mod_jk2.so(2).查看Apache模块mod_jk2.so(3).编辑Apache配置文件vim /usr/local/apache/conf/httpd.conf LoadModule jk2_module modules/mod_jk2.so(4).编辑虚拟主机NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@free.com DocumentRoot "/data/html" ServerName www.free.com ErrorLog "logs/www.free.com.error.log" CustomLog "logs/www.free.com.access.log" combined <Directory "/data/html"> Options Indexes FollowSymLinks DirectoryIndex index.html index.jsp index.htm AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin admin@free.com DocumentRoot "/data/html/wordpress" ServerName blog.free.com ErrorLog "logs/blog.free.com.error.log" CustomLog "logs/blog.free.com.access.log" combined <Directory "/data/html/wordpress"> Options Indexes FollowSymLinks DirectoryIndex index.html index.jsp index.htm AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>(5).增加Tomcat的配置文件cd /usr/local/apache/conf/ vim workers2.properties [logger.apache] level=DEBUG [shm] file=/usr/local/apache/logs/shm.file size=1048576 #Example socket channel override port and host. [channel.socket:localhost:8009] port=8009 host=127.0.0.1 #define the worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 #Uri mapping [uri:/*.jsp] [uri:/servlet/*] [uri:/*.vm] [uri:/*.do] worker=ajp13:localhost:8009(6).Tomcat配置虚拟主机<Host name="www.free.com" debug="0" appBase="/data/html"> <Context path="/" docBase="/data/html" debug="0"/> </Host>(7).测试cd /data/html vim index.jsp <html> <body> <center> Now time is :<%=new java.util.Date()%> </center> </body> </html> /usr/local/apache/bin/apachectl -t /usr/local/apache/bin/apachectl -S /usr/local/apache/bin/apachectl start /usr/local/tomcat/bin/catalina.sh start... 全文

apache tomcat

SVN与Apache整合

下载Apache(http://httpd.apache.org/download.cgi) 安装apache_2.2.14-win32-x86-no_ssl.msi打开Apache安装目录下Apache2.2\conf\httpd.conf 配置文件:v将下列2行前方的#移除(第83 行):vLoadModule dav_module modules/mod_dav.sovLoadModule dav_fs_module modules/mod_dav_fs.so... 全文

apache svn

Apache日志Shell分析

 1、查看当天有多少个IP访问:awk '{print $1}' log_file|sort|uniq|wc -l2、查看某一个页面被访问的次数:grep "/index.php" log_file | wc -l3、查看每一个IP访问了多少个页面:awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file4、将每个IP访问的页面数进行从小到大排序:awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n5、查看某一个IP访问了哪些页面:grep ^111.111.111.111 log_file| awk '{print $1,$7}'6、去掉搜索引擎统计当天的页面:awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l7、查看2009年6月21日14时这一个小时内有多少IP访问:awk '{print $4,$1}' log_file | grep 21/Jun/2009:14 | awk '{print $2}'| sort | uniq | wc -l... 全文

Apache Shell 日志

Apache配置

Apache配置一、apache简介:1、Apache是最流行的web服务器,它开放源代码,支持挂平台应用(linux、Unix、windows)。2、Apache的优点:(1)功能强大,apache自带了很多功能模块,可根据要求编译所需的模块(2)配置简单,/usr/local/apache/conf/httpd.conf(3)速度快,apache处理静态页面文件效率高(4)性能稳定,apache在高负荷请求下性能表现卓越3、apache的缺点:(1)只支持静态网页,对于jsp、php等动态网页不支持... 全文

Apache 休闲 职场

apache ab压力测试

以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了。就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。 格式: ./ab [options] [http://]hostname[:port]/path 参数:     -n requests     Number of requests to perform     //在测试会话中所执行的请求个数。默认时,仅执行一个请求     -c concurrency Number of multiple requests to make     //一次产生的请求个数。默认是一次一个。     -t timelimit    Seconds to max. wait for responses     //测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。     -p postfile     File containing data to POST     //包含了需要POST的数据的文件.     -T content-type Content-type header for POSTing     //POST数据所使用的Content-type头信息。     -v verbosity    How much troubleshooting info to print     //设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。     -w              Print out results in HTML tables     //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。     -i              Use HEAD instead of GET    // 执行HEAD请求,而不是GET。     -x attributes   String to insert as table attributes     //     -y attributes   String to insert as tr attributes     //     -z attributes   String to insert as td or th attributes     //     -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)     //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。     -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'                     Inserted after all normal header lines. (repeatable)     -A attribute    Add Basic WWW Authentication, the attributes                     are a colon separated username and password.     -P attribute    Add Basic Proxy Authentication, the attributes                     are a colon separated username and password.     //-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。     -X proxy:port   Proxyserver and port number to use     -V              Print version number and exit     -k              Use HTTP KeepAlive feature     -d              Do not show percentiles served table.     -S              Do not show confidence estimators and warnings.     -g filename     Output collected data to gnuplot format file.     -e filename     Output CSV file with percentages served     -h              Display usage information (this message)    //-attributes 设置 属性的字符串.缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:... 全文

测试 apache

HTTP协议及Apache配置解析

一、http协议简介1.http:HyperText Transfer Protocal 超文本传输协议(应用层协议)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。目前普遍使用的HTTP协议的版本是HTTP/1.12.HTTP/1.1协议中共定义了八种方法(动作)来以不同方式操作指定的源:... 全文

Apache

linux下apache

 linux下apache-tomcat安装部署最近公司业务需求,需要在linux下搭建apache-tomcat环境,于是根据自己的部署过程,写了这篇文章,希望可以对广大网友有所帮助!一、apache-tomcat简介二、下载安装相应软件包。在安装tomcat之前需要安装JDK.可以去各自的官网去下载,cd /usr/local   wget http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-linux-i586.rpm... 全文

apache-tomcat安装

centos 安装 apache 2.4

apache下载地址由于Apache依赖于APR、APR-Util和PCRE,所以需要下载:... 全文

apache

apache 日志日益膨胀解决方法

将httpd.conf中CustomLog logs/access.log common 改成CustomLog "|c:/apache/bin/rotatelogs c:/apache/logs/%Y_%m_%d.access.log 86400 480" common重启Apache其中c:/apache/是你安装apache的路径这样每一天生成一个日志文件或者干脆将CustomLog logs/access.log common 前面加上# 注释掉就不会生成日志文件了.... 全文

apache

Apache worker & prefork

Apache worker & prefork 选择prefork还是worker可以在编译时使用–with-mpm=MPM参数指定,默认为prefork,preforkprefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。在make编译和make install安装后,使用httpd -l来确定当前使用的MPM是prefork.c。查看httpd-mpm.conf配置文件,里面包含如下默认的配置段:<IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> prefork 控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两 个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式 可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个 值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为 MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。 MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了“MaxRequestsPerChild”个请求后将自 动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内存泄 漏。2、在服务器负载下降的时侯会自动减少子进程数。因此,可根据服务器的负载来调整这个值。MaxClients是这些指令中最为重要的一个,设定的是 Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep http|wc -l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。虽然理论上这个值越大,可以 处理的请求就越多,但Apache默认的限制不能大于256。ServerLimit指令无须重编译Apache就可以加大MaxClients。<IfModule prefork.c>ServerLimit 10000 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 10000 MaxRequestsPerChild 0 </IfModule> Worker 相对于prefork,worker全新的支持多线程和多进程混合模型的MPM。由于 使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以 获得基于进程服务器的稳定性。在configure –with-mpm=worker后,进行make编译、make install安装。在缺省生成的httpd-mpm.conf中有以下默认配置段: <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样, 为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients 设置了同时连入的clients最大总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。MinSpareThreads和 MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。 ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild 值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时 也需要显式声明ServerLimit(最大值是20000)。需要注意的是,如果显式声明了ServerLimit,那么它乘以 ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。 <IfModule worker.c> ServerLimit 25 ThreadLimit 200 StartServers 3 MaxClients 2000 MinSpareThreads 50 MaxSpareThreads 200 ThreadsPerChild 100 MaxRequestsPerChild 0 </IfModule>下面是利用Apache自带的测试工具ab对Server进行测试的情况(设定请求的index页面为6bytes),cpu%为cpu占用率,mem为内存使用量(M为单位),RequestsPerSecond为每秒处理的请求数。 1、Prefor方式(ServerLimit,StartServer,MinSpareServers,MaxSpareServers,MaxClients,MaxRequestPerChild)  ... 全文

Apache worker & prefork

apache虚拟主机搭建

    公司以前做了一个ftp的服务器,但是在访问的时候总是用ip感觉很不方便而且也不安全,所以领导要求使用域名来访问,安全又方便大家。下面记录一下配置过程。     apache的安装就不记录了,安装好apache之后,进入到配置文件下,我的服务器是在/etc/httpd/conf/httpd.conf下,只需要做简单的配置就可以了。... 全文

apache 虚拟主机

基于SSL的Apache配置

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。该系统提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。... 全文

Apache SSL

Apache CouchDB数据库

导读:随着技术的迅速发展,我们也追求最新的技术来帮助我们完成工作的需要,那么毫无疑问我们需要使用云技术来享受这些新的服务。CouchDB数据库是众多开源项目中的一个,该项目构建了一个用于存储key-value pairs的数据库。这个项目使用Erlang语言编写的,受Apache 软件基金支持。你可以下载源文件在任何机器上安装,然后编译运行它们。使用它是没有费用的,除了你需要花钱购置服务器。... 全文

Apache CouchDB数据库

apache编译配置

apache-1.3.9**from apache-1.3.x/README.configure Standard installation ---------------------  $ gunzip <apache_1.3.X.tar.gz | tar xvf -  $ ./configure --prefix=PREFIX [...]  $ make  $ make install $ ./configure --compat --prefix=/path/to/apache $ make $ make install显示安装后的文件目录布局,不实际编译:... 全文

apache源码包编译安装

apache配置文件详解

    ServerRoot “/usr/local“        ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下。      ScoreBoardFile /var/run/httpd.scoreboard        httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,这时每个Apache服务器都需要独立的设置文件htt pd.conf,并使用不同的ScoreBoardFile。      #ResourceConfig conf/srm.conf   #AccessConfig conf/access.conf        这两个参数ResourceConfig和AccessConfig,就用于和使用srm.conf和access.conf设置文件的老版本Apache兼容。如果没有兼容的需要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用httpd.conf一个文件来保存所有的设置选项。      PidFile /var/run/httpd.pid        PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd进程。PidFILE定义的文件中就记录httpd父进程的进程号。      Timeout 300        Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。      KeepAlive On        在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。      MaxKeepAliveRequests 100        MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。      KeepAliveTimeout 15        KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。      ThreadsPerChild 50    设置服务器使用进程的数目。    # 这是以服务器的响应速度为准的, 数目太大则会变慢       MaxRequestsPerChild 30        使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。        但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的htt pd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRe questPerChild定义。 缺省的设置值为30,这个值对于具备高稳定性特点的FreeBSD系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。   为了安全,设置为零       #Listen 3000   #Listen 12.34.56.78:80   #BindAddress *        Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也可以指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。        即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。在HTTP 1.1中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。      #ExtendedStatus On        Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数可以让服务器报告更全面的运行状态信息            ---------------------------------------------------------------------------------      ServerAdmin you@your.address        配置文件中应该改变的也许只有ServerAdmin, 这一项用于配置WWW服务器的管理员的email地址,这将在HTTP服务出现错误的条件下返回给浏览器,以便让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为WWW服务器的管理员,通过邮件服务器的别名机制,将发送到webmaster 的电子邮件发送给真正的Web管理员。      ServerName localhost        缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里指定I P地址。当ServerName设置不正确的时候,服务器不能正常启动。        通常一个Web服务器可以具有多个名字,客户浏览器可以使用所有这些名字或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,服务器总是以自己的正式名字回应浏览器。ServerName就定义了Web服务器自己承认的正式名字,例如一台服务器名字(在DNS中定义了A类型)为freebsd.exmaple.org.cn,同时为了方便记忆还定义了一个别名(CNAME记录)为www.exmaple.org.cn,那么Apache自动解析得到的名字就为freebsd.example.org.cn,这样不管客户浏览器使用哪个名字发送请求,服务器总是告诉客户程序自己为freebsd.example.org.cn。虽然这一般并不会造成什么问题,但是考虑到某一天服务器可能迁移到其他计算机上,而只想通过更改DNS中的www别名配置就完成迁移任务,所以不想让客户在其书签中使用 freebsd记录下这个服务器的地址,就必须使用ServerName来重新指定服务器的正式名字。      DocumentRoot “/usr/local/www/data“        DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的UR L就被映射为这个目录下的网页文件。这个目录下的子目录,以及使用符号连接指出的文件和目录都能被浏览器访问,只是要在URL上使用同样的相对目录名。        注意,符号连接虽然逻辑上位于根文档目录之下,但实际上可以位于计算机上的任意目录中,因此可以使客户程序能访问那些根文档目录之外的目录,这在增加了灵活性的同时但减少了安全性。Apache在目录的访问控制中提供了FollowSymLinks选项来打开或关闭支持符号连接的特性。      <Directory />    Options FollowSymLinks    AllowOverride None   </Directory>        Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两种方式来实现,一个是在设置文件 httpd.conf(或access.conf)中针对每个目录进行设置,另一个方法是在每个目录下设置访问控制文件,通常访问控制文件名字为.htaccess。虽然使用这两个方式都能用于控制浏览器的访问,然而使用配置文件的方法要求每次改动后重新启动httpd守护进程,比较不灵活,因此主要用于配置服务器系统的整体安全控制策略,而使用每个目录下的.htaccess文件设置具体目录的访问控制更为灵活方便。         <Directory “H:/web001“>   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   </Directory>         这里定义的是系统对外发布文档的目录的访问设置,设置不同的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进行访问控制设置,上例使用allow from all,表示允许所有的客户机访问这个目录,而不进行任何限制。         UserDir public_html (Win32=“My Documents/My Website“)        当在一台FreeBSD上运行Apache服务器时,这台计算机上的所有用户都可以有自己的网页路径,形如 http://freebsd.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等各种服务器支持的请求方法做Limit的参数,来设定对不同请求方法的访问限制。一般可以打开对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中的关键安全信息不至于被客户获取。      TypesConfig /usr/local/etc/apache/mime.types        TypeConfig用于设置保存有不同的MIME类型数据的文件名,在FreeBSD下缺省设置为/usr/local/etc/apache/mime.types。      DefaultType text/plain        如果Web服务器不能决定一个文档的缺省类型,这通常表示文档使用了非标准的后缀,那么服务器就使用 DefaultType定义的MIME类型将文档发送给客户浏览器。这里的设置为text/plain,这样设置的问题是,如果服务器不能判断出文档的MIME,那么大部分情况下这个文档为一个二进制文档,但使用 text/plain格式发送回去,浏览器将在内部打开它而不会提示保存。因此建议将这个设置更改为 application/octet-stream,这样浏览器将提示用户进行保存。      MIMEMagicFile /usr/local/etc/apache/magic         除了从文件的后缀出发来判断文件的MIME类型之外,Apache还可以进一步分析文件的一些特征,来判断文件的真实MIME类型。这个功能是由mod_mime_magic模块实现的,它需要一个记录各种MIME类型特征的文件,以进行分析判断。上面的设置是一个条件语句,如果载入了这个模块,就必须指定相应的标志文件magic的位置。       HostnameLookups Off        通常连接时,服务器仅仅可以得到客户机的IP地址,如果要想获得客户机的主机名,以进行日志记录和提供给 CGI程序使用,就需要使用这个HostnameLookups选项,将其设置为On打开DNS反查功能。但是这将使服务器对每次客户请求都进行DNS查询,增加了系统开销,使得反应变慢,因此缺省设置为使用Off关闭此选项。关闭选项之后,服务器就不会获得客户机的主机名,而只能使用IP地址来记录客户。            ErrorLog /var/log/httpd-error.log   LogLevel warn   LogFormat “%h %l %u %t \“%r\“ %>s %b \“%{Referer}i\“ \“%{User-Agent}i\““ combined   LogFormat “%h %l %u %t \“%r\“ %>s %b“ common   LogFormat “%{Referer}i -> %U“ referer   LogFormat “%{User-agent}i“ agent   #CustomLog /var/log/httpd-access.log common   #CustomLog /var/log/httpd-referer.log referer   #CustomLog /var/log/httpd-agent.log agent   CustomLog /var/log/httpd-access.log combined         这里定义了系统日志的形式,对于服务器错误记录, 由ErrorLog、LogLevel 来定义不同的错误日志文件及其记录内容。         对于系统的访问日志,缺省使用CustomLog参数定义日志的位置,缺省使用combined 参数指定将所有的访问日志放在一个文件中,然而也可以将不同种类的访问日志放在不同的日志记录文件中,这是通过在 CustomLog中指定不同的记录类型来完成的。common表示普通的对单页面请求访问记录,referer表示每个页面的引用记录,可以看出一个页面中包含的请求数,agent表示对客户机的类型记录,显然可以将现有的combined 定义的设置行注释掉,并使用common、referer和agent作为CustomLog的参数,来为不同种类的日志分别指定日志记录文件。      显然,LogFormat是用于定义不同类型的日志进行记录时使用的格式, 这里使用了以%开头的宏定义,以记录不同的内容。        如果这些参数指定的文件使用的是相对路径,那么就是相对于ServerRoot的路径。      ServerSignature On        一些情况下,例如当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息。有的管理员更倾向于不对外显示这些信息,就可以将这个参数设置为Off,或者设置为Email,最后一行将替换为对ServerAdmin 的Email提示。         Alias /icons/ “/usr/local/www/icons/“       Options Indexes MultiViews    AllowOverride None    Order allow,deny    Allow from all        Alias参数用于将URL与服务器文件系统中的真实位置进行直接映射,一般的文档将在DocumentRoot 中进行查询,然而使用Alias定义的路径将直接映射到相应目录下,而不再到DocumentRoot 下面进行查询。因此Alias可以用来映射一些公用文件的路径,例如保存了各种常用图标的icons路径。这样使得除了使用符号连接之外,文档根目录(DocumentRoot)外的目录也可以通过使用了Alias映射,提供给浏览器访问。      定义好映射的路径之后,应该需要使用Directory语句设置访问限制。      ScriptAlias /cgi-bin/ “/usr/local/www/cgi-bin/“       AllowOverride None    Options None    Order allow,deny    Allow from all         ScriptAlias也是用于URL路径的映射,但与Alias的不同在于,ScriptAlias是用于映射CGI程序的路径,这个路径下的文件都被定义为CGI程序,通过执行它们来获得结果,而非由服务器直接返回其内容。缺省情况下CGI程序使用cgi-bin目录作为虚拟路径。      # Redirect old-URI new-URL        Redirect参数是用来重写URL的,当浏览器访问服务器上的一个已经不存在的资源的时候,服务器返回给浏览器新的URL,告诉浏览器从该URL中获取资源。这主要用于原来存在于服务器上的文档,改变了位置之后,而又希望能使用老URL能访问到,以保持与以前的URL兼容。       IndexOptions FancyIndexing   AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip   AddIconByType (TXT,/icons/text.gif) text/*   AddIconByType (IMG,/icons/image2.gif) image/*   AddIconByType (SND,/icons/sound2.gif) audio/*   AddIconByType (VID,/icons/movie.gif) video/*   AddIcon /icons/binary.gif .bin .exe   AddIcon /icons/binhex.gif .hqx   AddIcon /icons/tar.gif .tar   AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv   AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip   AddIcon /icons/a.gif .ps .ai .eps   AddIcon /icons/layout.gif .html .shtml .htm .pdf   AddIcon /icons/text.gif .txt   AddIcon /icons/c.gif .c   AddIcon /icons/p.gif .pl .py   AddIcon /icons/f.gif .for   AddIcon /icons/dvi.gif .dvi   AddIcon /icons/uuencoded.gif .uu   AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl   AddIcon /icons/tex.gif .tex   AddIcon /icons/bomb.gif core   AddIcon /icons/back.gif ..   AddIcon /icons/hand.right.gif README   AddIcon /icons/folder.gif ^^DIRECTORY^^   AddIcon /icons/blank.gif ^^BLANKICON^^   DefaultIcon /icons/unknown.gif   #AddDescription “GZIP compressed document“ .gz   #AddDescription “tar archive“ .tar   #AddDescription “GZIP compressed tar archive“ .tgz   ReadmeName README   HeaderName HEADER   IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t         当一个HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件。但如果一个目录中不存在缺省的索引文件,并且该服务器又许可显示目录文件列表的时候,就会显示出这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简单的列表,就需要前面的这些设置参数。      如果使用了IndexOptions FancyIndexing选项,可以让服务器产生的目录列表中针对各种不同类型的文档引用各种图标。而哪种文件使用哪种图标,则使用下面的 AddIconByEncoding、AddIconByType以及AddIcon来定义,分别依据MIME的编码、类型以及文件的后缀来判断使用何种图标。如果不能确定文档使用的图标,就使用 DefaultIcon定义的缺省图标。        同样,使用AddDescription可以为不同类型的文档加入不同的描述。并且,服务器还在目录下,查询使用ReadmeName和HeaderName定义的文件(自动加上. html后缀,如果没有发现,再使用.txt后缀进行搜索),如果发现了这些文件,就在文件列表之前首先显示这些文件的内容,以使得普通目录列表具备更大的可理解性。            IndexIgnore让服务器在列出文件列表时忽略相应的文件, 这里使用模式配置的方式定义文件名。            AddEncoding x-compress Z   AddEncoding x-gzip gz       AddEncoding用于告诉一些使用压缩的MIME类型,这样可以让浏览器进行解压缩操作。      AddLanguage en .en   AddLanguage fr .fr   AddLanguage de .de   AddLanguage da .da   AddLanguage el .el   AddLanguage it .it   LanguagePriority en fr de          一个HTML文档可以同时具备多个语言的版本,如对于file1.html文档可以具备file1.html.en、file1.html.fr 等不同的版本,每个语言后缀必须使用AddLanguage进行定义。这样服务器可以针对不同国家的客户,通过与浏览器进行协商,发送不同的语言版本。而LanguagePriority 定义不同语言的优先级,以便在浏览器没有特殊要求时,按照顺序使用不同的语言版本回应对file1.html 的请求。这个国际化的能力实际的应用并不多。         AddDefaultCharset ISO-8859-1      浏览器选择的标准编码      简体中文网站改为:GB2312         #AddType application/x-httpd-php3 .phtml   #AddType application/x-httpd-php3-source .phps                AddType参数可以为特定后缀的文件指定MIME类型,这里的设置将覆盖mime.types中的设置。      #AddHandler cgi-script .cgi        AddHandler是用于指定非静态的处理类型,用于定义文档为一个非静态的文档类型,需要进行处理,再向浏览器返回处理结果。例如上面注释中的设置是将以.cgi结尾的文件设置为cgi-script类型,那么服务器将启动这个CGI程序以进行处理。如果需要在前面AliasScript定义的路径之外执行CGI程序,就需要使用这个参数进行设置,此后以.cgi结尾的文件将被当作CGI程序执行。        在配置文件、这个目录中的.htaccess以及其上级目录的.htaccess中必须允许执行CGI程序,这需要通过Options ExecCGI参数设定。      #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类型。      #ErrorDocument 500 “The server made a boo boo.   #ErrorDocument 404 /missing.html   #ErrorDocument 404 /cgi-bin/missing_handler.pl   #ErrorDocument 402 http://some.other_server.com/subscription_info.html         如果客户请求的网页不存在,或者没有访问权限等情况发生时,服务器将产生一个错误代码,同时也将回应客户浏览器一个标识错误的网页。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命令为特定的客户程序,设置特殊的参数,以保证对老版本浏览器的兼容性,并支持新浏览器的新特性。         #   #ProxyRequests On   #   #   # Order deny,allow   # Deny from all   # Allow from .your_domain.com   #   #ProxyVia On   #CacheRoot “/usr/local/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服务,并且每个域名都完全独立,包括具有完全独立的文档目录结构及设置,这样域名之间完全独立,不但使用每个域名访问到的内容完全独立,并且使用另一个域名无法访问其他域名提供的网页内容。        虚拟主机的概念对于ISP来讲非常有用,因为虽然一个组织可以将自己的网页挂在具备其他域名的服务器上的下级往址上,但使用独立的域名和根网址更为正式,易为众人接受。传统上,必须自己设立一台服务器才能达到单独域名的目的,然而这需要维护一个单独的服务器,很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。ISP也没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机能力,使服务器为多个域名提供Web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。        有两种设定虚拟主机的方式,一种是基于HTTP 1.0标准,需要一个具备多IP地址的服务器,再配置DNS 服务器,给每个IP地址以不同的域名,最后才能配置Apache的配置文件,使服务器对不同域名返回不同的Web文档。由于这需要使用额外的IP地址,对每个要提供服务的域名都要使用单独的IP地址,因此这种方式实现起来问题较多。        可以在一个网络界面上绑定多个IP地址,FreeBSD下需要使用ifconfig的alias参数来进行这个配置,但此时会影响网络性能。        HTTP 1.1标准在协议中规定了对浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。        要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置,为服务器增加多个CNAME选项,如:      freebsd IN A 192.168.1.64   vhost1 IN CNAME freebsd   vhost2 IN CNAME freebsd                基本的设置选项都是为了freebsd主机设定的,如果要为vhost1和vhost2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置。      NameVirtualHost 192.168.1.64      DocumentRoot /usr/local/www/data   ServerName freebsd.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,才应用前面定义的缺省选项。         ----------------------------------------------------------------------------------------         NameVirtualHost www.xxx.org   (对于动态IP的另类方法:指定虚拟主机的IP,由于要将域名映射为IP,不能使用localhost,127.0.0.1,计算机名,等这样的地址,所以,可以再一次通过域名转换,将域名转换为IP,这样就不必每次更改IP了。)      #   # VirtualHost example:   # Almost any Apache directive may go into a VirtualHost container.   # The first VirtualHost section is used for requests without a known   # server name.   #   <VirtualHost 192.168.0.1>(虚拟主机IP)    ServerAdmin 111@xxx.com(第一个虚拟主机Email)    DocumentRoot H:/web001(第一个虚拟主机目录)    ServerName www.xxx.org(第一个虚拟主机域名)    ErrorLog logs/www.xxx.org-error.log(第一个虚拟主机错误日志)    CustomLog logs/www.xxx.org-access.log common(第一个虚拟主机数据)   </VirtualHost>      <VirtualHost 192.168.0.2>(虚拟主机IP)    ServerAdmin 111@xxx.com(第二个虚拟主机Email)    DocumentRoot H:/web002(第二个虚拟主机目录)    ServerName www.xxx2.org(第二个虚拟主机域名)    ErrorLog logs/www.xxx2.org-error.log(第二个虚拟主机错误日志)    CustomLog logs/www.xxx2.org-access.log common(第二个虚拟主机数据)   </VirtualHost>      以此类推,可以增加更多虚拟主机。  ... 全文

配置文件 apache

第二章apache的Configure参数详解

 版本V1.0时间2012-10-04版权GPL作者itnihao 邮箱 itnihao@qq.com博客 http://itnihao.blog.51cto.com如需重新发行,请注明以上信息,谢谢合作前言... 全文

apache

apache优化配置

apache优化配置###=========httpd.conf begin===================##Apache主配置文件##设置服务器的基础目录,默认为Apache安装目录ServerRoot "/usr/local/apache-2.2.6"##设置服务器监听的IP和端口Listen 80##设置管理员邮件地址##设置服务器用于辨识自己的主机名和端口号ServerName www.uenu.com:80###设置动态加载的DSO模块##如果需要提供基于文本文件的认证,加载此模块,否则注释掉LoadModule authn_file_module modules/mod_authn_file.so##如果需要提供基于DBM文件的认证,加载此模块,否则注释掉#LoadModule authn_dbm_module modules/mod_authn_dbm.so##如果需要提供匿名用户认证,加载此模块,否则注释掉#LoadModule authn_anon_module modules/mod_authn_anon.so##如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉#LoadModule authn_dbd_module modules/mod_authn_dbd.so##如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉LoadModule authn_default_module modules/mod_authn_default.so##此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。LoadModule authz_host_module modules/mod_authz_host.so##如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so##如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉LoadModule authz_user_module modules/mod_authz_user.so##如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉#LoadModule authz_dbm_module modules/mod_authz_dbm.so##如果需要基于文件的所有者进行授权,加载此模块,否则注释掉#LoadModule authz_owner_module modules/mod_authz_owner.so##如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉LoadModule authz_default_module modules/mod_authz_default.so##如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块LoadModule auth_basic_module modules/mod_auth_basic.so##如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块#LoadModule auth_digest_module modules/mod_auth_digest.so##此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用LoadModule file_cache_module modules/mod_file_cache.so##此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用,推荐加载LoadModule cache_module modules/mod_cache.so##此模块为mod_cache提供基于磁盘的缓存管理,推荐加载LoadModule disk_cache_module modules/mod_disk_cache.so##此模块为mod_cache提供基于内存的缓存管理,推荐加载LoadModule mem_cache_module modules/mod_mem_cache.so##如果需要管理SQL数据库连接,为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐)#LoadModule dbd_module modules/mod_dbd.so##此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用#LoadModule dumpio_module modules/mod_dumpio.so##如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉#LoadModule ext_filter_module modules/mod_ext_filter.so##如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉#LoadModule include_module modules/mod_include.so##如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉LoadModule filter_module modules/mod_filter.so##如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉LoadModule deflate_module modules/mod_deflate.so##如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉LoadModule log_config_module modules/mod_log_config.so##如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉#LoadModule logio_module modules/mod_logio.so##如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉LoadModule env_module modules/mod_env.so##如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则注释掉LoadModule expires_module modules/mod_expires.so##如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉LoadModule headers_module modules/mod_headers.so##如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉#LoadModule ident_module modules/mod_ident.so##如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉LoadModule setenvif_module modules/mod_setenvif.so##此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so##此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so##如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉LoadModule mime_module modules/mod_mime.so##如果允许Apache提供DAV协议支持,加载此模块,否则注释掉#LoadModule dav_module modules/mod_dav.so##此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载#LoadModule status_module modules/mod_status.so##如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉#LoadModule autoindex_module modules/mod_autoindex.so##如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉#LoadModule asis_module modules/mod_asis.so##如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉#LoadModule info_module modules/mod_info.so##如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉#LoadModule cgi_module modules/mod_cgi.so##此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉#LoadModule cgid_module modules/mod_cgid.so##此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉#LoadModule dav_fs_module modules/mod_dav_fs.so##如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉#LoadModule vhost_alias_module modules/mod_vhost_alias.so##如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉LoadModule negotiation_module modules/mod_negotiation.so##如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉LoadModule dir_module modules/mod_dir.so##如果需要处理服务器端图像映射,加载此模块,否则注释掉#LoadModule imagemap_module modules/mod_imagemap.so##如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉#LoadModule actions_module modules/mod_actions.so##如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉LoadModule speling_module modules/mod_speling.so##如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉#LoadModule userdir_module modules/mod_userdir.so##此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载LoadModule alias_module modules/mod_alias.so##如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉LoadModule rewrite_module modules/mod_rewrite.so ##设置子进程的用户和组<IfModule !mpm_netware_module>User daemonGroup daemon</IfModule>##设置默认WEB文档根目录DocumentRoot "/usr/local/apache-2.2.6/htdocs"##设置WEB文档根目录的默认属性<Directory />Options FollowSymLinksAllowOverride NoneOrder deny,allowDeny from all</Directory>##设置DocumentRoot指定目录的属性<Directory "/usr/local/apache-2.2.6/htdocs">Options FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all</Directory>##设置默认目录资源列表文件<IfModule dir_module>DirectoryIndex index.html</IfModule>##拒绝对.ht开头文件的访问,以保护.htaccess文件<FilesMatch "^\.ht">Order allow,denyDeny from allSatisfy All</FilesMatch>##指定错误日志文件ErrorLog logs/error_log##指定记录到错误日志的消息级别LogLevel warn<IfModule log_config_module>##定义访问日志的格式LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>##指定访问日志及使用的格式CustomLog logs/access_log combined</IfModule>##设定默认CGI脚本目录及别名<IfModule alias_module>ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"</IfModule>##在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀<IfModule cgid_module>Scriptsock logs/cgisock</IfModule>##设定默认CGI脚本目录的属性<Directory "/usr/local/apache-2.2.6/cgi-bin">AllowOverride NoneOptions NoneOrder allow,denyAllow from all</Directory>##设定默认MIME内容类型DefaultType text/plain<IfModule mime_module>##指定MIME类型映射文件TypesConfig conf/mime.types##增加.Z .tgz的类型映射AddType application/x-compress .ZAddType application/x-gzip .gz .tgz</IfModule>##启用内存映射EnableMMAP on##使用操作系统内核的sendfile支持来将文件发送到客户端EnableSendfile on##指定多路处理模块(MPM)配置文件并将其附加到主配置文件Include conf/extra/httpd-mpm.conf##指定多语言错误应答配置文件并将其附加到主配置文件Include conf/extra/httpd-multilang-errordoc.conf##指定目录列表配置文件并将其附加到主配置文件#Include conf/extra/httpd-autoindex.conf##指定语言配置文件并将其附加到主配置文件Include conf/extra/httpd-languages.conf##指定用户主目录配置文件并将其附加到主配置文件#Include conf/extra/httpd-userdir.conf##指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件#Include conf/extra/httpd-info.conf##指定提供Apache文档访问的配置文件并将其附加到配置文件#Include conf/extra/httpd-manual.conf##指定DAV配置文件并将其附加到主配置文件#Include conf/extra/httpd-dav.conf##指定与Apache服务自身相关的配置文件并将其附加到主配置文件Include conf/extra/httpd-default.conf##指定mod_deflate压缩模块配置文件并将其附加到主配置文件Include conf/extra/httpd-deflate.conf##指定mod_expires模块配置文件并将其附加到主配置文件Include conf/extra/httpd-expires.conf##指定虚拟主机配置文件并将其附加到主配置文件#Include conf/extra/httpd-vhosts.conf##指定SSL配置文件并将其附加到主配置文件Include conf/extra/httpd-ssl.conf##SSL默认配置<IfModule ssl_module>SSLRandomSeed startup builtinSSLRandomSeed connect builtin</IfModule>###==========httpd.conf end=================== 4.3.3 配置多路处理模块(MPM)编辑多路处理模块配置文件:vi /usr/local/apache-2.2.6/conf/extra/httpd-mpm.conf 如果使用prefork多路处理模块,按下面的提示修改:###=============httpd-mpm.conf prefork begin===================##设置prefork多路处理模块<IfModule mpm_prefork_module>StartServers 5MinSpareServers 5MaxSpareServers 10ServerLimit    4000MaxClients 4000MaxRequestsPerChild 0</IfModule>###=============httpd-mpm.conf prefork end===================   指令说明:  StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。  MinSpareServers:设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。MaxSpareServers:设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成"MinSpareServers+1"。ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。  MaxClients:用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是256,如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。如果设置为非零值,笔者建议设为10000-30000之间的一个值。公式:   MaxClients<=ServerLimit  如果使用worker多路处理模块,按下面的提示修改:###=============httpd-mpm.conf worker begin===================##设置worker多路处理模块<IfModule mpm_worker_module>StartServers 5ServerLimit 20ThreadLimit 200MaxClients 4000MinSpareThreads 25MaxSpareThreads 250ThreadsPerChild 200MaxRequestsPerChild 0</IfModule>###=============httpd-mpm.conf worker end===================指令说明:StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients 和ThreadsPerChild需要的子进程数量高。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。ThreadLimit: 设置每个子进程可配置的线程数ThreadsPerChild上限,该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。MaxClients:用于伺服客户端请求的最大接入请求数量(最大线程数)。任何超过MaxClients限制的请求都将进入等候队列。默认值是"400",16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,你必须同时增加 ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。MinSpareThreads:最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。MaxSpareThreads:设置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。 ThreadsPerChild:每个子进程建立的线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。如果设置为非零值,笔者建议设为10000-30000之间的一个值。公式:ThreadLimit >= ThreadsPerChildMaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数MaxSpareThreads >= MinSpareThreads+ThreadsPerChild 4.3.4 配置Apache服务器默认设置编辑Apache服务器默认设置文件:vi /usr/local/apache-2.2.6/conf/extra/httpd-default.conf 按下面的提示修改:###=============httpd-default.conf begin===================##Apache默认设置文件Timeout 120KeepAlive OffMaxKeepAliveRequests 100KeepAliveTimeout 5UseCanonicalName OffAccessFileName .htaccessServerTokens ProdServerSignature OffHostnameLookups Off###=============httpd-default.conf end====================指令说明:  Timeout:设置服务器在断定请求失败前等待的秒数。默认值300。KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On。MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优的服务器性能。  KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。UseCanonicalName:配置服务器如何确定它自己的域名,可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。笔者建议设置为Off。AccessFileName:设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。ServerTokens:控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着ServerSignature指令的显示内容。可选值为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。ServerSignature:配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外创建一个指向ServerAdmin的"mailto:"部分。建议使用默认值Off。HostnameLookups:设置是否启用对客户端IP的DNS查找,可选值为On | Off | Double。DNS查询会造成明显的时间消耗,建议设置为Off。###=========httpd.conf begin===================##Apache主配置文件##设置服务器的基础目录,默认为Apache安装目录ServerRoot "/usr/local/apache-2.2.6"##设置服务器监听的IP和端口Listen 80##设置管理员邮件地址##设置服务器用于辨识自己的主机名和端口号ServerName www.uenu.com:80###设置动态加载的DSO模块##如果需要提供基于文本文件的认证,加载此模块,否则注释掉LoadModule authn_file_module modules/mod_authn_file.so##如果需要提供基于DBM文件的认证,加载此模块,否则注释掉#LoadModule authn_dbm_module modules/mod_authn_dbm.so##如果需要提供匿名用户认证,加载此模块,否则注释掉#LoadModule authn_anon_module modules/mod_authn_anon.so##如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉#LoadModule authn_dbd_module modules/mod_authn_dbd.so##如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉LoadModule authn_default_module modules/mod_authn_default.so##此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。LoadModule authz_host_module modules/mod_authz_host.so##如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so##如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉LoadModule authz_user_module modules/mod_authz_user.so##如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉#LoadModule authz_dbm_module modules/mod_authz_dbm.so##如果需要基于文件的所有者进行授权,加载此模块,否则注释掉#LoadModule authz_owner_module modules/mod_authz_owner.so##如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉LoadModule authz_default_module modules/mod_authz_default.so##如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块LoadModule auth_basic_module modules/mod_auth_basic.so##如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块#LoadModule auth_digest_module modules/mod_auth_digest.so##此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用LoadModule file_cache_module modules/mod_file_cache.so##此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用,推荐加载LoadModule cache_module modules/mod_cache.so##此模块为mod_cache提供基于磁盘的缓存管理,推荐加载LoadModule disk_cache_module modules/mod_disk_cache.so##此模块为mod_cache提供基于内存的缓存管理,推荐加载LoadModule mem_cache_module modules/mod_mem_cache.so##如果需要管理SQL数据库连接,为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐)#LoadModule dbd_module modules/mod_dbd.so##此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用#LoadModule dumpio_module modules/mod_dumpio.so##如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉#LoadModule ext_filter_module modules/mod_ext_filter.so##如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉#LoadModule include_module modules/mod_include.so##如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉LoadModule filter_module modules/mod_filter.so##如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉LoadModule deflate_module modules/mod_deflate.so##如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉LoadModule log_config_module modules/mod_log_config.so##如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉#LoadModule logio_module modules/mod_logio.so##如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉LoadModule env_module modules/mod_env.so##如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则注释掉LoadModule expires_module modules/mod_expires.so##如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉LoadModule headers_module modules/mod_headers.so##如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉#LoadModule ident_module modules/mod_ident.so##如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉LoadModule setenvif_module modules/mod_setenvif.so##此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so##此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so##如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉LoadModule mime_module modules/mod_mime.so##如果允许Apache提供DAV协议支持,加载此模块,否则注释掉#LoadModule dav_module modules/mod_dav.so##此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载#LoadModule status_module modules/mod_status.so##如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉#LoadModule autoindex_module modules/mod_autoindex.so##如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉#LoadModule asis_module modules/mod_asis.so##如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉#LoadModule info_module modules/mod_info.so##如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉#LoadModule cgi_module modules/mod_cgi.so##此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉#LoadModule cgid_module modules/mod_cgid.so##此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉#LoadModule dav_fs_module modules/mod_dav_fs.so##如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉#LoadModule vhost_alias_module modules/mod_vhost_alias.so##如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉LoadModule negotiation_module modules/mod_negotiation.so##如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉LoadModule dir_module modules/mod_dir.so##如果需要处理服务器端图像映射,加载此模块,否则注释掉#LoadModule imagemap_module modules/mod_imagemap.so##如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉#LoadModule actions_module modules/mod_actions.so##如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉LoadModule speling_module modules/mod_speling.so##如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉#LoadModule userdir_module modules/mod_userdir.so##此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载LoadModule alias_module modules/mod_alias.so##如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉LoadModule rewrite_module modules/mod_rewrite.so ##设置子进程的用户和组<IfModule !mpm_netware_module>User daemonGroup daemon</IfModule>##设置默认WEB文档根目录DocumentRoot "/usr/local/apache-2.2.6/htdocs"##设置WEB文档根目录的默认属性<Directory />Options FollowSymLinksAllowOverride NoneOrder deny,allowDeny from all</Directory>##设置DocumentRoot指定目录的属性<Directory "/usr/local/apache-2.2.6/htdocs">Options FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all</Directory>##设置默认目录资源列表文件<IfModule dir_module>DirectoryIndex index.html</IfModule>##拒绝对.ht开头文件的访问,以保护.htaccess文件<FilesMatch "^\.ht">Order allow,denyDeny from allSatisfy All</FilesMatch>##指定错误日志文件ErrorLog logs/error_log##指定记录到错误日志的消息级别LogLevel warn<IfModule log_config_module>##定义访问日志的格式LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>##指定访问日志及使用的格式CustomLog logs/access_log combined</IfModule>##设定默认CGI脚本目录及别名<IfModule alias_module>ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"</IfModule>##在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀<IfModule cgid_module>Scriptsock logs/cgisock</IfModule>##设定默认CGI脚本目录的属性<Directory "/usr/local/apache-2.2.6/cgi-bin">AllowOverride NoneOptions NoneOrder allow,denyAllow from all</Directory>##设定默认MIME内容类型DefaultType text/plain<IfModule mime_module>##指定MIME类型映射文件TypesConfig conf/mime.types##增加.Z .tgz的类型映射AddType application/x-compress .ZAddType application/x-gzip .gz .tgz</IfModule>##启用内存映射EnableMMAP on##使用操作系统内核的sendfile支持来将文件发送到客户端EnableSendfile on##指定多路处理模块(MPM)配置文件并将其附加到主配置文件Include conf/extra/httpd-mpm.conf##指定多语言错误应答配置文件并将其附加到主配置文件Include conf/extra/httpd-multilang-errordoc.conf##指定目录列表配置文件并将其附加到主配置文件#Include conf/extra/httpd-autoindex.conf##指定语言配置文件并将其附加到主配置文件Include conf/extra/httpd-languages.conf##指定用户主目录配置文件并将其附加到主配置文件#Include conf/extra/httpd-userdir.conf##指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件#Include conf/extra/httpd-info.conf##指定提供Apache文档访问的配置文件并将其附加到配置文件#Include conf/extra/httpd-manual.conf##指定DAV配置文件并将其附加到主配置文件#Include conf/extra/httpd-dav.conf##指定与Apache服务自身相关的配置文件并将其附加到主配置文件Include conf/extra/httpd-default.conf##指定mod_deflate压缩模块配置文件并将其附加到主配置文件Include conf/extra/httpd-deflate.conf##指定mod_expires模块配置文件并将其附加到主配置文件Include conf/extra/httpd-expires.conf##指定虚拟主机配置文件并将其附加到主配置文件#Include conf/extra/httpd-vhosts.conf##指定SSL配置文件并将其附加到主配置文件Include conf/extra/httpd-ssl.conf##SSL默认配置<IfModule ssl_module>SSLRandomSeed startup builtinSSLRandomSeed connect builtin</IfModule>###==========httpd.conf end=================== 4.3.3 配置多路处理模块(MPM)编辑多路处理模块配置文件:vi /usr/local/apache-2.2.6/conf/extra/httpd-mpm.conf 如果使用prefork多路处理模块,按下面的提示修改:###=============httpd-mpm.conf prefork begin===================##设置prefork多路处理模块<IfModule mpm_prefork_module>StartServers 5MinSpareServers 5MaxSpareServers 10ServerLimit    4000MaxClients 4000MaxRequestsPerChild 0</IfModule>###=============httpd-mpm.conf prefork end===================   指令说明:  StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。  MinSpareServers:设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。MaxSpareServers:设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成"MinSpareServers+1"。ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。  MaxClients:用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是256,如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。如果设置为非零值,笔者建议设为10000-30000之间的一个值。公式:   MaxClients<=ServerLimit  如果使用worker多路处理模块,按下面的提示修改:###=============httpd-mpm.conf worker begin===================##设置worker多路处理模块<IfModule mpm_worker_module>StartServers 5ServerLimit 20ThreadLimit 200MaxClients 4000MinSpareThreads 25MaxSpareThreads 250ThreadsPerChild 200MaxRequestsPerChild 0</IfModule>###=============httpd-mpm.conf worker end===================指令说明:StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients 和ThreadsPerChild需要的子进程数量高。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。ThreadLimit: 设置每个子进程可配置的线程数ThreadsPerChild上限,该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。MaxClients:用于伺服客户端请求的最大接入请求数量(最大线程数)。任何超过MaxClients限制的请求都将进入等候队列。默认值是"400",16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,你必须同时增加 ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。MinSpareThreads:最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。MaxSpareThreads:设置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。 ThreadsPerChild:每个子进程建立的线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。如果设置为非零值,笔者建议设为10000-30000之间的一个值。公式:ThreadLimit >= ThreadsPerChildMaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数MaxSpareThreads >= MinSpareThreads+ThreadsPerChild 4.3.4 配置Apache服务器默认设置编辑Apache服务器默认设置文件:vi /usr/local/apache-2.2.6/conf/extra/httpd-default.conf 按下面的提示修改:###=============httpd-default.conf begin===================##Apache默认设置文件Timeout 120KeepAlive OffMaxKeepAliveRequests 100KeepAliveTimeout 5UseCanonicalName OffAccessFileName .htaccessServerTokens ProdServerSignature OffHostnameLookups Off###=============httpd-default.conf end====================指令说明:  Timeout:设置服务器在断定请求失败前等待的秒数。默认值300。KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On。MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优的服务器性能。  KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。UseCanonicalName:配置服务器如何确定它自己的域名,可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。笔者建议设置为Off。AccessFileName:设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。ServerTokens:控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着ServerSignature指令的显示内容。可选值为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。ServerSignature:配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外创建一个指向ServerAdmin的"mailto:"部分。建议使用默认值Off。HostnameLookups:设置是否启用对客户端IP的DNS查找,可选值为On | Off | Double。DNS查询会造成明显的时间消耗,建议设置为Off。... 全文

apache 配置 优化

Apache设置 禁止目录浏览

编辑httpd.conf文件找到如下内容:<Directory “/jesse/www”>Options Indexes FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all</Directory>在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。即:Options -Indexes FollowSymLinks 或者 改为Options FollowSymLinks即将indexes去掉AllowOverride None 如果需要服务器支持rewrite功能则将其设置为AllowOverride All[备注在:Indexes前,加+代表允许目录浏览;加–代表禁止目录浏览]... 全文

Apache 目录浏览

4 5 6 7 8 9 10 11 12 13