CentOS 6.x与RHEL 6.x使用yum安装Nginx

1、设置yum源
CentOS 6.x
# cd /tmp
# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

RHEL 6.x
# cd /tmp
# wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-rhel-6-0.el6.ngx.noarch.rpm

2、安装Nginx
# yum install nginx

3、Nginx相关设置
# chkconfig nginx on
# service nginx start
# service nginx stop
# service nginx restart
# service nginx status
# service nginx reload

4、Nginx配置文件
默认安装目录: /etc/nginx/
默认SSL和虚拟主机配置目录: /etc/nginx/conf.d/
默认日志保存目录: /var/log/nginx/
默认网站文件目录: /usr/share/nginx/html
默认配置文件: /etc/nginx/nginx.conf
默认访问日志文件: /var/log/nginx/access.log
默认错误日志文件: /var/log/nginx/error.log

修改Nginx配置文件:
# vi /etc/nginx/nginx.conf
设置线程数,通常CPU多少核就填多少,例如2核:
worker_processes 2;
开设gzip支持:
gzip on;

修改站点配置文件:
# vi /etc/nginx/conf.d/default.conf
设置IP和监听端口,例如服务器IP是192.168.1.100:
listen 192.168.1.100:80;
绑定域名:
server_name www.chnlanker.com;

重启Nginx服务
# service nginx start

5、最后检查Nginx是否正常工作
# netstat -tulpn | grep :80
# ps aux | grep nginx

关于保留IP地址较全面的介绍

IP地址在使用时,专门保留了一些特殊用途的IP地址。

(1)每类网络中,二进制位全部为0的主机地址从不分配给入网计算机使用,而是保留给网络本身,用做识别网络的地址。例如IP地址101.0.0.0标识的是网络地址为101的网络。
(2) 每类网络中,二进制位全部为1的主机地址也从不分配给入网计算机使用,而是保留给定向广播使用。当向一个主机地址全部为1的网络发送数据包时,意味着要将该数据包同时发送给该网络中的所有主机。这样的地址会映射到硬件广播。因此,定向广播地址的网络部分有效,主机部分的所有位必须为1。
(3)进行定向广播的条件是必须首先知道IP地址的网络部分。但是有时希望发送广播信息的入网计算机,要求在不知道自己所在网络IP地址的情况下也能够将发出的信息送给本网的所有主机。为此,在IP地址中规定了一个本地网络广播地址,即32位二进制地址全部是1的地址,或使用4个十进制数字表示为255.255.255.255的IP地址。当一台计算机向这个地址发送数据包时,意味着该数据包将送给本网络中的所有主机。
(4)在IP地址的使用中,TCP/IP软件对二进制地址全部为0的部分解释为“本”(this),就像对二进制地址全部为1的部分解释为“所有”那样。网络部分全部为0的IP地址被解释为“本”网络。这样,当一台入网计算机在收到一个数据包,其目的地址的网络部分为0,而主机部分与该计算机的地址匹配,则接收计算机就将网络部分解释为“本”网络。对于32位二进制地址全部是0的地址,或使用4个十进制数字表示为 0.0.0.0的地址,被保留表示本主机,但是该地址仅允许入网计算机在系统启动时使用,而且永远不能够作为有效目的地址。
(5)IP地址中的A类地址127.0.0.0,被保留用于环回(Loopback)地址,用来测试TCP/IP和本机进程间的通信。因此,发送给网络地址为127的数据包是永远送不到TCP/IP网络上的。

在考虑了IP地址的上述特殊情况后,实际上各类IP地址可以使用的范围如下。

网络地址范围

A

1.0.0.0到126.0.0.0有效

0.0.0.0和127.0.0.0保留

B

128.1.0.0到191.254.0.0有效

128.0.0.0和191.255.0.0保留

C

192.0.1.0到223.255.254.0有效

192.0.0.0和223.255.255.0保留

D

224.0.0.0到239.255.255.255用于组播

E

240.0.0.0到255.255.255.254保留

255.255.255.255用于广播

在上述范围中,Internet协会的编号分配委员会IANA的IP地址分配方案还留出了三部分IP地址空间,给不连接到Internet的企业内部网专用。这三部分保留的IP地址空间分别在A、B和C类地址空间中都存在,范围如下。
A类

10.0.0.0~10.255.255.255(一个A类地址)

B类

172.16.0.0~172.31.255.255(16个连续的B类地址)

C类

192.168.0.0~192.168.255.255(256个连续的C类地址)

IANA保证这些网络IP地址不会分配给连接到Internet上的任何网络。任何机构或个人都可以自由地选择这些网络地址作为自己的网络地址。

//—————————————————————————————–

三类ip地址的保留地址

10.x.x.x

172.16.x.x ~ 172.31.x.x

192.168.x.x

Apache2 httpd.conf 中文版

#
# 基于 NCSA 服务的配置文件。
#
#这是Apache服务器主要配置文件。
#它包含服务器的影响服务器运行的配置指令。
#参见<URL:http://httpd.ache.org/doc-2.0/>以取得关于这些指令的详细信息
#
#不要只是简单的阅读这些指令信息而不去理解它。
#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告。
#
#这些配置指令被分为下面三个部分:
#1. 控制整个Apache服务器行为的部分(即全局环境变量)
#2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置参数
#3. 虚拟主机的设置参数
#
#配置和日志文件名:如果你指定的文件名以“/”开始(win32下以“dirver:/”),
#服务器将使用绝对路径,如果文件名不是以“/”开始的,那么它将把ServerRoot
#的值附加在文件名的前面,例如,对“logs/foo.log”,如果ServerRoot的值
#为“/usr/local/apache2”,则该文件应为“/usr/local/apache2/logs/foo.log”
#
##第一区:全局环境参数
#
#这里设置的参数将影响整个Apache服务器的行为;
#例如Apache能够处理的并发请求的数量等。
#
#ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录。
#
#注意!如果你想要将它指定为NFS或其它网络上的位置,
#请一定要去阅读与LockFile有关的文档(可能在
#<URL:http://httpd.apache.org/docs-2.0/mod/mpm_common.html#lockfile>)。
#这将会使你自己也能解决很多问题。
#
#路径的结尾不要添加斜线。
#
ServerRoot “/usr/loacl/apache2”
#
#串行访问的锁文件必须保存在本地磁盘上
#
<IfModule !mpm_winnt.c>
<IfModule !mpm_neware.c>
#LockFile logs/accept.lock
</IfModule>
</IfModule>
#ScoreBoardFile:用来保存内部服务进程信息的文件。
#如果未指明(默认),记分板(scoreboard)将被保存在一个匿名的共享内存段中,
#并且它不能被第三方软件所使用。
#如果指定了,要确保不能使用两个Apache使用同一个记分板文件,
#这个记分板文件必须保存在本地磁盘上。
#
<IfModule !mpm_netware.c>
<IfModule !perchild.c>
#ScoreBoardFile logs/apache_runtime_status
<IfModule>
<IfModule>
#
#PidFile:记录服务器启动进程号的文件。
#
<IfModule !mpm_neware.c>
PidFile logs/httpd.pid
</IfModule>
#
#Timeout:接收和发送前超时秒数
#
Timeout 300
#
#KeepAlive:是否允许稳固的连接(每个连接有多个请求),
#设为”Off”则停用。
#
KeepAlive On
#
#MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,
#设为0表示无限制接入。
#我们推荐你将其设为一个较大的值,以便提高性能
MaxKeepAliveRequests 100
#
#KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数
#
KeepAliveTimeout 15
##
##Server-Pool大小设定(针对MPM的)
##
# prefork MPM
# StartServers:启动时服务器启动的进程数
# MinSpareServers:保有的备用进程的最小数目
# MaxSpareServers:保有的备用进程的最大数目
# MaxClients:服务器允许启动的最大进程数
# MaxRequestsPerChild:一个服务进程允许的最大请求数
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestPerChild 0
</IfModule>
# worker MPM
# StartServers:服务器启动时的服务进程数目
# MaxClients:允许同时连接的最大用户数目
# MinSpareThreads:保有的最小工作线程数目
# MaxSpareThreads:允许保有的最大工作线程数目
# ThreadsPerChild:每个服务进程中的工作线程常数
# MaxRequestsPerChild:服务进程中允许的最大请求数目
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# perchild MPM
# NumServers:服务进程数量
# StartThreads:每个服务进程中的起始线程数量
# MinSpareThreads:保有的最小线程数量
# MaxSpareThreads:保有的最大线程数量
# MaxThreadsPerChild:每个服务进程允许的最大线程数
# MaxRequestsPerChild:每个服务进程允许连接的最大数量
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
</IfModule>
# WinNT MPM
# ThreadsPerChild:服务进程中工作线程常数
# MaxRequestsPerChild:服务进程允许的最大请求数
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
# BeOS MPM
# StartThreads:服务器启动时启动的线程数
# MaxClients:可以启动的最大线程数(一个线程等于一个用户)
# MaxRequestsPerThread:每个线程允许的最大请求数
<IfModule beos.c>
StartThreads 10
MaxClients 50
MaxRequestsPerThread 10000
</IfModule>
# NetWare MPM
# ThreadStachSize:为每个工作线程分配的堆栈尺寸
# StartThreads:服务器启动时启动的线程数
# MinSpareThreads:用于处理实发请求的空闲线程数
# MaxSpareThreads:空闲线程的最大数量
# MaxThreads:在同一时间活动的最大线程数
# MaxRequestPerChild:一个线程服务请求的最大数量,
# 推荐将其设置为0,以实现无限制的接入
<IfModule mpm_netware.c>
ThreadStackSize 65536
StartThreads 250
MinSpareThreads 25
MaxSpareThreads 250
MaxThreads 1000
MaxRequestPerChild 0
</IfModule>
# OS/2 MPM
# StartServers:启动的服务进程数量
# MinSpareThreads:每个进程允许的最小空闲线程
# MaxSpareThreads:每个进程允许的最大空闲线程
# MaxRequestsPerChild:每个服务进程允许的最大连接数
<IfModule mpmt_os2.c>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0
</IfModule>
#
# Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值
# 参见<VirtualHost>指令
# 使用如下命令使Apache只在指定的IP地址上监听,
# 以防止它在IP地址0.0.0.0上监听
#
# Listen 12.34.56.78:80
Listen 80
#
# 动态共享支持(DSO)
#
# 为了能够使用那些以DSO模式编译的模块中的函数,你必须有相应的“LoadModule”行,
# 因此,在这里包含了这些指令,以便能在使用它之前激活。
# 那些静态编译的模块不需要在这里列出 (即以“httpd -l”列出的模块)
#
# 示例:
# LoadModule foo_module modules/mod_foo.so
#
#
# ExtendedStatus:当调用“server-status”时,控制Apache是产生“全”状态
# 信息(ExtendedStatus On),还是产生基本信息(ExtendedStatus Off)。
# 默认为off
#
# ExtendedStatus On
### 第二区:“主”服务配置
#
# 这一区建立被 “主” 服务器用的指令值,以回应那些不被 <VirtualHost>
# 定义处理的任何请求。
# 这些数值也提供默认值给后面定义的<VirtualHost>容器。
# 如果<VirtualHost>中有定义,那么这里定义的指令值将被
# <VirtualHost>中的定义所覆盖。
#
<IfModule !mpm_winnt.c>
<IfModule !mpm_neware.c>
#
# 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动
# 然后再将它切换为你想要使用的用户或组。
#
# User/Group:运行httpd的用户和组
# 在SCO (ODT3)上使用“User nouser”和“Group nogroup”
# 在HPUX上,你可能不能以nobody身份使用共享内存,建议创建一个www用户。
# 注意一些核心(kernel)在组ID大于60000时拒绝setgid(Group)或semctl(IPC_SET),
#节在这些系统上不要使用“Group #-1”。
#
User nobody
Group #-1
</IfModule>
</IfModule>
#
# ServerAdmin:你的邮件地址,当发生问题时Apache将向你发出邮件。
# 作为一个出错文档,这个地址显示在server-generated页上,
# 例如:admin@your-domain.com
#
ServerAdmin kreny@sina.com
#
# ServerName指定Apache用于识别自身的名字和端口号。
# 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错
#
# 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。
# 参见UseCanonicalName指令
#
# 如果你的主机没有注册DNS名,在这里键入它的IP地址
# 无论如何,你必须使用它的IP地址来提供服务,
# 这里使用一种容易理解的方式重定向服务
ServerName www.dalouis.com:80
#
# UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。
# 当设置为 “Off”时,Apache会使用用户端提供的主机名和端口号。
# 当设置为“On”,Apache会使用ServerName指令的值。
#
UseCanonicalName Off
#
# DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。
# 但是可以使用符号链接和别名来指向到其他的位置。
#
DocumentRoot “/home/redhat/public_html”
#
# Apache可以存取的每个目录都可以配置存取权限(包括它的子目录)。
#
# 首先,我们配置一个高限制的特征。
# 这将禁止访问文件系统所在的目录,并添加你希望允许访问的目录块。
# 如下所示
<Directory />
Order Deny,Allow
Deny from all
</Directory>
#
# 注意从这里开始你一定要明确地允许哪些特别的特征能够被使用。
# – 所以,如果Apache没有象你所期待的那样工作的话,
# 请检查你是否在下面明确的指定它可用。
#
#
# 这将改变到你设置的DocumentRoot
#
<Directory “/home/redhat/public_html”>
#
# Options:这个指令的值可以是“None”,“All”,或者下列选项的任意组合:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# 注意,“MultiViews”必须被显式的指定,“Options All”不能为你提供这个特性。
#
# 这个指令既复杂又重要,请参见
#“http://httpd.apache.org/docs-2.0/mod/core.html#optioins”以取得更多的信息。
#
Options FollowSymLinks
#
# AllowOverride控制那些被放置在.htaccess文件中的指令。
# 它可以是“All”,“None”,或者下列指令的组合:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# 控制谁可以获得服务。
#
Order allow,deny
Allow from all
</Directory>
#
# UserDir:指定在得到一个~user请求时将会添加到用户home目录后的目录名。
#
UserDir public_html
# 为防止在UserDir指令上的漏洞,对root用户设置
# 象“./”这样的UserDir是非常有用的。
# 如果你使用Apache 1.3或以上版本,我们强烈建议你
# 在你的服务器配置文件中包含下面的行
UserDir disabled root
#
# 下面是一个使用UserDir指令使一个站点的目录具有只读属性的示例:
#
# <Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit Indexes
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
# </Directory>
#
# DirectoryIndex:定义请求是一个目录时,Apache向用户提供服务的文件名
#
# index.html.var文件(一个类型映象文件)用于提供一个文档处理列表,
# 出于同样的目的,也可以使用MultiViews选项,但是它会非常慢。
#
DirectoryIndex index.php index.html index.html.var
#
# AccessFileName:在每个目录中查询为目录提供附加配置指令的文件的文件名。
# 参见AllowOverride指令。
#
AccessFileName .htaccess
#
# 下面的行防止.htaccess和.htpasswd文件被Web客户查看。
#
<Files ~ “^\.ht”>
Order allow,deny
Deny from all
</Files>
#
# Typeconfig:定义在哪里查询mime.types文件。
#
TypeConfig conf/mime.types
#
# DefaultType:定义当不能确定MIME类型时服务器提供的默认MIME类型。
# 如果你的服务主要包含text或HTML文档,“text/plain”是一个好的选择;
# 如果大多是二进制文档,诸如软件或图像,你应使用
# “application/octer-stream”来防止浏览器象显示文本那样显示二进制文件。
#
DefaultType text/plain
#
# mod_mime_magic允许服务器从自己定义自己类型的文件中使用不同的线索(hints),
# 这个MIMEMagicFile指令定义hints定义所在的文件。
#
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
#
# HostnameLookups:指定记录用户端的名字还是IP地址,例如,本指令为on时
# 记录主机名,如www.apache.org;为off时记录IP地址,204.62.129.132。
# 默认值为off,这要比设为on好得多,因为如果设为on则每个用户端请求都将会
# 至少造成对 nameserver 进行一次查询。
#
HostnameLookups Off
#
# EnableMMAP:控制是否进行内存转储(如果操作系统支持的话)。
# 默认为on,如果你的服务器安装在网络文件系统上(NFS),请关闭它。
# 在一些系统上,关闭它会提升系统性能(与文件系统类型无关);
# 具体情况请参阅http://httpd.apache.org/docs-2.0/mod/core.html#enablemmap
#
# EnableMMAP off
#
# EnableSendfile:控制是否使用sendfile kernel支持发送文件
# (如果操作系统支持的话)。默认为on,如果你的服务器安装在网络文件系统
# (NFS)上,请你关闭它。
# 参见http://httpd.apache.org/docs-2.0/mod/core.html#enablesendfile
#
# EnableSendfile off
#
# ErrorLog:错误日志文件定位。
# 如果你没有在<VirtualHost>内定义ErrorLog指令,这个虚拟主机的错误信息
# 将记录在这里。如果你在那儿定义了ErrorLog,这些错误信息将记录在你所
# 定义的文件里,而不是这儿定义的文件。
#
ErrorLog logs/error_log
#
# LogLevel:控制记录在错误日志文件中的日志信息数量。
# 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg。
#
LogLevel warn
#
# 下面的指令为CustomLog指令定义格式别名。
#
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
# 你需要安装了mod_logio.c模块才能使用%I和%O。
# LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio
#
# 指定接入日志文件的定位和格式(一般日志格式)。
# 如果你没有在<VirtualHost>内定义这个指令,传输信息将记录在这里,
# 如果你定义了这个指令,则记录在你指定的位置,而不是这儿定义的位置。
#
CustomLog logs/access_log common
#
# 如果你想要记录agent和referer信息,可以使用下面的指令
#
# CustomLog logs/referer_log referer
# CustomLog logs/agent_log agent
#
# 如果你想要使用一个文件记录access,agent和referer信息,
# 你可以如下定义这个指令:
#
# CustomLog logs/access_log combined
#
# ServerTokens
# 这个指令定义包含在HTTP回应头中的信息类型。默认为“Full”,
# 这表示在回应头中将包含模块中的操作系统类型和编译信息。
# 可以设为列各值中的一个:
# Full | OS | Minor | Minimal | Major | Prod
# Full传达的信息最多,而Prod最少。
#
ServerTokens Full
#
# 随意的添加包含服务器版本和虚拟主机名字一行信息到server-generated输出页中
# (内部错误文档,FTP目录列表,mod_status和mod_info输出等等,除了CGI错误
# 或自定义的错误文档以外)。
# 设为“EMail”将包含一个指向ServerAdmin的mailto:连接。
# 可以为如下值:On | Off | EMail
#
ServerSignature On
#
# Aliases:在这时添加你需要的别名,格式如下:
# Alias 别名 真实名
#
# 注意,如果你在别名的未尾包含了“/”,那么在URL中也需要包含“/”。
# 因此,“/icons”不是这个示例中的别名。
# 如果别名中以“/”结尾,那么真实名也必须以“/”结尾,
# 如果别名中省略了结尾的“/”,那么真实名也必须省略。
#
# 我们使用别名“/icons/”来表示FancyIndexed目录列表,如果你不使用、
# FancyIndexing,你可以注释掉它。
#
# Alias /icons/ “/usr/local/apache2/icons/”
# <Directory “/usr/local/apache2/icons”>
# Options Indexes MultiViews
# AllowOverride None
# Order allow,deny
## Allow from all
# </Directory>
#
# 这将改变ServerRoot/manual。这个别名提供了手册页所在的位置,
# 即使你改变了你的DocumentRoot。如果你对有无手册页并不在意的话,
# 你可以注释掉它。
#
Alias /manual “/usr/loacl/apache2/manual”
<Directory “/usr/local/apache2/manual”>
Options Indexes FollowSymLinks MultiViews IncludesNoExec
AddOutputFilter Includes html
Order allow,deny
Allow from all
</Directory>
#
# ScriptAlias:指定包含服务脚本的目录。
# ScriptAliases 本质上与Aliases一样,除了这里的文档在请求时做为程序处理处理以外。
# 尾部的“/”规则与Alias一样
#
ScriptAlias /cgi-bin/ “/usr/loacl/apache2/cgi-bin/”
# 这里是添加php 4支持的指令
AddType application/x-httpd-php .php
LoadModule php4_module modules/libphp4.so
<IfModule mod_cgid.c>
#
# 添加mod_cgid.c设置,mod_cgid提供使用cgid进行通讯的UNIX套接字的
# 脚本接口路径。
#
# Scriptsock logs/cgisock
</IfModule>
#
# 将”/usr/local/apache2/cgi-bin”改为你的ScriptAliased指定的CGI目录,
# 如果你配置了的话。
#
<Directory “/usr/local/apache2/cgi-bin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#
# Redirect允许你告诉客户端使用存在于服务器名字空间中的文档,
# 而不是现在的,这帮助客户定位那些改变了位置的文档。
# 例如:
# Redirect permanent /foo http://www.example.com/bar
#
# 控制server-generated目录列表显示的指令
#
#
# IndexOptions:控制server-generated目录列表显示特征。
#
IndexOptions FancyIndexing VersionSort
#
# AddIcon* 指令告诉服务器不同扩展名的图象文件如何显示,
# 只适用于FancyIndexed指令
#
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 为那些没有显式定义图标的文件提供处理
#
DefaultIcon /icons/unknown.gif
#
# AddDescription允许你在server-generated索引后放置一个简短的说明。
# 只对FancyIndexed指令有效。
# 格式:AddDescription “说明” 文件名
#
# AddDescription “GZIP compressed document” .gz
# AddDescription “tar archive” .tar
# AddDescription “GZIP compressed tar archive” .tgz
#
# ReadmeName指定服务器默认查找的README文件的名字,并添加到目录列表中
#
# HeaderName指定目录列表前缀文件的文件名
ReadmeName README.html
HeaderName HEADER.html
#
# IndexIgnore指定目录索引忽略并且不包含在列表中的文件名集合,
# 支持shell类型的通配符。
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
#
# AddEncoding允许你在信息传送中使用(Mosaic/X 2.1+)解压缩信息,
# 注意:不是所有的浏览器都支持这个选项。
# 尽管名字相似,但是下列的指令与上面的FancyIndexing定制指令不同。
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
# DefaultLanguage和AddLanguage允许你指定文档的语言。
# 这使你可以让用户用容易理解的语言浏览文档。
#
# 指定默认的语言,这意味着所有没有指定语言的包都将使用该语言。
# 多数情况下,你也许并不想设置它,除非你确信这样做是正确的。
# 通常,不使用确定的语言比使用错误的语言要好。
#
# DefaultLanguage nl
#
# 注意1:作为语言关键字的词缀毫无疑问是不能一样的–采用波兰
# 文的文档(网络标准语言代码是pl)将希望使用“AddLanguage pl .po”
# 来避免与perl脚本的一般词缀产生二义性。
#
# 注意2: 下面的例子举例说明在一些范例中语言的二字符缩写与它的国家
# 的二字符缩写不相同,例如 “Danmark/dk” 和 “Danmark/da” 的比较.
#
# 注意3: 在 “ltz” 的情况下我们使用三字符词缀,违犯了 RFC的规定,
# 运行中将修复它并使用RFC1766标准取得参考数据。
#
# Danish (da) – Dutch (nl) – English (en) – Estonian (et)
# French (fr) – German (de) – Greek-Modern (el)
# Italian (it) – Norwegian (no) – Norwegian Nynorsk (nn) – Korean (ko)
# Portugese (pt) – Luxembourgeois* (ltz)
# Spanish (es) – Swedish (sv) – Catalan (ca) – Czech(cz)
# Polish (pl) – Brazilian Portuguese (pt-br) – Japanese (ja)
# Russian (ru) – Croatian (hr)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr
# LanguagePriority允许你在会话过程中优先使用一些语言。
#
# 以优先次序递减的方式列出它们。我们或多或少地采用按字母排列顺序的方式
# 排列它们。也许你想要改变这个顺序。
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
#
# ForceLanguagePriority 允许你为MULTIPLE CHOICES(Prefer)[在通讯的情况下]
# 或NOT ACCEPTABLE(Fallback)[没有可接受的语言匹配的情况]提供一个结果页。
#
ForceLanguagePriority Prefer Fallback
#
# 为发送出的所有页指定默认的字符集,这总是一个好主意,并且为你的
# web站点的国际化打开了大门,这不正是你曾经想要的吗。同样地,指定
# 默认字符集有一些小的损害,如一个使用iso-8859-1(latin1)标准命令
# 的页面,除非以别的方式指定例如你仅仅以显式方式声明它。
# 也有一些与那些总是鼓励你使用默认字符集的javascropt和URL语法有关
# 的浏览器安全原因。
#
#AddDefaultCharset ISO-8859-1
AddDefaultCharse GB2312
#
# 一般以文件扩展名的方式使用字符集。也许你想要避免与语言扩展发生
# 碰撞,除非你在每次改变后都做了很好的测试。
# 参见http://www.iana.org/assignments/character-sets以取得字符集
# 的名字列表和它们各自的RFCs。
#
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# 对于俄语,使用了多个字符集(如何使用主要依靠客户端):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
# 下面的字符集没有映射到一个特定的标准(iso)上,但是它们在浏览器
# 中被广泛的支持。注意那些大写字母。
# (它不应该,但是它是为兼容一些浏览器而做)
#
# 参见http://www.iana.org/assianments/character-sets以取得
# 它们的列表。但是浏览器支持较少。
#
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis
#
# AddType允许你为指定的文件类型添加或覆盖mime.types文件中配置的MIME
#
AddType application/x-tar .tgz
AddType image/x-icon .ico
#
# AddHandler允许你映射确定的文件扩展名到“handlers”:
# 与文件类型无关的行为。这既能编译到服务器中也可以添加到Action指令
# 中(看下面)。
# 为了在ScriptAliased指令指定的以外使用CGI脚本:
#(要使它可用,你还需要在Options中添加“ExecCGI”。
#
# AddHandler cgi-script .cgi
#
# 对于那些包含他们自己的HTTP头的文件
#
# AddHandler send-as-is asis
#
# 对于server-parsed imagemap文件:
#
# AddHandler imap-file map
#
# agemap 文件:
#
#AddHandler imap- 文件映像
#
# 对于类型映像:(转移资源)
#(这是默认的设定以允许Apache的“It Worked”页能多种语言分发)。
#
AddHandler type-map var
#
# 过滤器允许你在将它发送到客户端前进行处理。
#
# 为了在服务器端分析包含(SSI)的.shtml文档:
# (要执行这个指令,你还需要在Options指令中添加“Includes”。)
#
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
#
# Action让你定义当调用匹配的媒体文件时将要执行的脚本。这将减少
# 那些经常使用的CGI脚本的URL路径名的重复输入。
# 格式:Action media/type /cgi-script/location
# 格式:Action handler-name /cgi-script/location
#
#
# 可配置的错误应答有三种风格:
# 1)plain text 2)local redirects 3) external redirects
#
# 一些示例:
# ErrorDocument 500 “The server made a boo boo.”
# ErrorDocument 404 /missing.html
# ErrorDocument 404 “/cgi-bin/missing_handler.pl”
# ErrorDocument 402 http://www.example.com/subscription_info.html
#
#
# 综合应用这些指令,我们可以创建一个国际化的出错应答。
#
# 我们使用Alias来重定向任意/error/HTTP_<error>.html.var应答到
# 我们的多语言错误消息集合。使用正确的文本替代它。
#
# 通过加入下面的行,你就能够改变这些消息的显示,而不必改变
# HTTP_<error>.html.var文件。
#
# Alias /error/include/ “/your/include/path/”
#
# 以将/usr/local/apache2/error/include/下的文件拷贝到/your/inclue/path/下
# 开始,你可以创建你自己的文件集合,甚至是其于每个虚拟主机的。
# 不管你的ServerSignature如何设置,默认的包含文件将显示你的
# Aapche版本号和你的ServerAdmin邮件地址
#
# 国际化的错误文档需要mod_alias,mod_include和mod_negotiation三个
# 模块。要激活它们,取消下面30行的注释符号
# Alias /error/ “/usr/local/apache2/error/”
#
# <Directory “/usr/local/apache2/error”>
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var
# Order allow,deny
# Allow from all
# LanguagePriority en de es fr it nl sv
# ForceLanguagePriority Prefer Fallback
# </Directory>
#
# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error.php
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
# ErrorDocument 410 /error/HTTP_GONE.html.var
# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
# ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
#
# 下面的命令更改标准的HTTP应答行为以处理己知的浏览器问题。
#
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
#
# 下面命令关闭对那些没有尾部“/”的目录的非GET请求的重定向,
# 这些命令修复了微软的采用DAV方法不能正确处理重定向的WEB文件夹的问题。
# Apple下的DAV文件系统和Gnome下的VFS对DAV的支持也是采用这样的方法
# 进行处理的。
#
BrowserMatch “Microsoft Data Access Internet Publishing Provider” redirect-carefully
BrowserMatch “^WebDrive” redirect-carefully
BrowserMatch “^WebDAVFS/1.[012]” redirect-carefully
BrowserMatch “^gnome-vfs” redirect-carefully
#
# 允许你使用URL:http://servername/server-status来通过mod_status生
# 成并报告服务器状态信息。改变.example.com为你自己的域名。
#
# <Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Location>
#
# 允许使用URL:http://servername/server-info来远程报告服务器配置信息
# (需要mod_info.c支持)。改变“.example.com”为你自己的域名。
#
# <Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Location>
#
# 代理服务器命令,去掉下面的行使代理服务可用。
#
# <IfModule mod_proxy.c>
# ProxyRequests On
# <Proxy *>
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Proxy>
#
# 安装或关闭HTTP/1.1“通道”头处理。
# (“Full”添加服务器版本信息,“Block”移掉所有输出“通道”头信息。
# 可以设为下面各选项之一:Off | On | Full | Block
#
# ProxyVia On
# 最好为代理服务安装高速缓冲,去掉下面几行的注释符号:
# (没有CacheRoot则不缓冲)
#
# CacheRoot “/usr/local/apache2/proxy”
# CacheSize 5
# CacheGcInterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor 01
# CacheDefaultExpire 1
# NoCache a-domain.com another-domain.edu joes.garage-sale.com
# </IfModule>
# 代理命令结束。
#
# 附加的特定模块配置。
#
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
## 第三区:虚拟主机
#
# VirtualHost:你可以通过设置虚拟主机容器以实现在你的主机上保有多个
# 域名/主机名。大多数配置信息只使用基于名字的虚拟主机,因此服务器
# 不必担心IP地址的问题,下面的命令以*号代替虚拟主机名。
#
# 在你试着配置你的虚拟主机以前,请参见
# URL:http://httpd.apache.org/docs-2.0/vhosts/>以取得更多的信息。
#
# 你可以使用命令行选项“-S”来检验你的虚拟主机配置。
#
# 使用基于名字的虚拟主机。
#
# NameVirtualHost *
#
# 虚拟主机示例:
# 几乎所有的Apache命令都可以在虚拟主机容器中使用。
# 第一个虚拟主机区是用于向服务名未知的请求进行应答的配置。
#
# <VirtualHost *>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log commom
# </virtualHost>

## 基于 NCSA 服务的配置文件。##这是Apache服务器主要配置文件。#它包含服务器的影响服务器运行的配置指令。#参见<URL:http://httpd.ache.org/doc-2.0/>以取得关于这些指令的详细信息##不要只是简单的阅读这些指令信息而不去理解它。#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告。##这些配置指令被分为下面三个部分:#1. 控制整个Apache服务器行为的部分(即全局环境变量)#2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置参数#3. 虚拟主机的设置参数##配置和日志文件名:如果你指定的文件名以“/”开始(win32下以“dirver:/”),#服务器将使用绝对路径,如果文件名不是以“/”开始的,那么它将把ServerRoot#的值附加在文件名的前面,例如,对“logs/foo.log”,如果ServerRoot的值#为“/usr/local/apache2”,则该文件应为“/usr/local/apache2/logs/foo.log”###第一区:全局环境参数##这里设置的参数将影响整个Apache服务器的行为;#例如Apache能够处理的并发请求的数量等。##ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录。##注意!如果你想要将它指定为NFS或其它网络上的位置,#请一定要去阅读与LockFile有关的文档(可能在#<URL:http://httpd.apache.org/docs-2.0/mod/mpm_common.html#lockfile>)。#这将会使你自己也能解决很多问题。##路径的结尾不要添加斜线。#ServerRoot “/usr/loacl/apache2″##串行访问的锁文件必须保存在本地磁盘上#<IfModule !mpm_winnt.c><IfModule !mpm_neware.c>#LockFile logs/accept.lock</IfModule></IfModule>
#ScoreBoardFile:用来保存内部服务进程信息的文件。#如果未指明(默认),记分板(scoreboard)将被保存在一个匿名的共享内存段中,#并且它不能被第三方软件所使用。#如果指定了,要确保不能使用两个Apache使用同一个记分板文件,#这个记分板文件必须保存在本地磁盘上。#<IfModule !mpm_netware.c><IfModule !perchild.c>#ScoreBoardFile logs/apache_runtime_status<IfModule><IfModule>
##PidFile:记录服务器启动进程号的文件。#<IfModule !mpm_neware.c>PidFile logs/httpd.pid</IfModule>
##Timeout:接收和发送前超时秒数#Timeout 300
##KeepAlive:是否允许稳固的连接(每个连接有多个请求),#设为”Off”则停用。#KeepAlive On
##MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,#设为0表示无限制接入。#我们推荐你将其设为一个较大的值,以便提高性能MaxKeepAliveRequests 100
##KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数#KeepAliveTimeout 15
####Server-Pool大小设定(针对MPM的)##
# prefork MPM# StartServers:启动时服务器启动的进程数# MinSpareServers:保有的备用进程的最小数目# MaxSpareServers:保有的备用进程的最大数目# MaxClients:服务器允许启动的最大进程数# MaxRequestsPerChild:一个服务进程允许的最大请求数<IfModule prefork.c>StartServers 5MinSpareServers 5MaxSpareServers 10MaxClients 150MaxRequestPerChild 0</IfModule>
# worker MPM# StartServers:服务器启动时的服务进程数目# MaxClients:允许同时连接的最大用户数目# MinSpareThreads:保有的最小工作线程数目# MaxSpareThreads:允许保有的最大工作线程数目# ThreadsPerChild:每个服务进程中的工作线程常数# MaxRequestsPerChild:服务进程中允许的最大请求数目<IfModule worker.c>StartServers 2MaxClients 150MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestsPerChild 0</IfModule>
# perchild MPM# NumServers:服务进程数量# StartThreads:每个服务进程中的起始线程数量# MinSpareThreads:保有的最小线程数量# MaxSpareThreads:保有的最大线程数量# MaxThreadsPerChild:每个服务进程允许的最大线程数# MaxRequestsPerChild:每个服务进程允许连接的最大数量<IfModule perchild.c>NumServers 5StartThreads 5MinSpareThreads 5MaxSpareThreads 10MaxThreadsPerChild 20MaxRequestsPerChild 0</IfModule>
# WinNT MPM# ThreadsPerChild:服务进程中工作线程常数# MaxRequestsPerChild:服务进程允许的最大请求数<IfModule mpm_winnt.c>ThreadsPerChild 250MaxRequestsPerChild 0</IfModule>
# BeOS MPM# StartThreads:服务器启动时启动的线程数# MaxClients:可以启动的最大线程数(一个线程等于一个用户)# MaxRequestsPerThread:每个线程允许的最大请求数<IfModule beos.c>StartThreads 10MaxClients 50MaxRequestsPerThread 10000</IfModule>
# NetWare MPM# ThreadStachSize:为每个工作线程分配的堆栈尺寸# StartThreads:服务器启动时启动的线程数# MinSpareThreads:用于处理实发请求的空闲线程数# MaxSpareThreads:空闲线程的最大数量# MaxThreads:在同一时间活动的最大线程数# MaxRequestPerChild:一个线程服务请求的最大数量,# 推荐将其设置为0,以实现无限制的接入<IfModule mpm_netware.c>ThreadStackSize 65536StartThreads 250MinSpareThreads 25MaxSpareThreads 250MaxThreads 1000MaxRequestPerChild 0</IfModule>
# OS/2 MPM# StartServers:启动的服务进程数量# MinSpareThreads:每个进程允许的最小空闲线程# MaxSpareThreads:每个进程允许的最大空闲线程# MaxRequestsPerChild:每个服务进程允许的最大连接数<IfModule mpmt_os2.c>StartServers 2MinSpareThreads 5MaxSpareThreads 10MaxRequestsPerChild 0</IfModule>
## Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值# 参见<VirtualHost>指令# 使用如下命令使Apache只在指定的IP地址上监听,# 以防止它在IP地址0.0.0.0上监听## Listen 12.34.56.78:80
Listen 80
## 动态共享支持(DSO)## 为了能够使用那些以DSO模式编译的模块中的函数,你必须有相应的“LoadModule”行,# 因此,在这里包含了这些指令,以便能在使用它之前激活。# 那些静态编译的模块不需要在这里列出 (即以“httpd -l”列出的模块)## 示例:# LoadModule foo_module modules/mod_foo.so#
## ExtendedStatus:当调用“server-status”时,控制Apache是产生“全”状态# 信息(ExtendedStatus On),还是产生基本信息(ExtendedStatus Off)。# 默认为off## ExtendedStatus On
### 第二区:“主”服务配置## 这一区建立被 “主” 服务器用的指令值,以回应那些不被 <VirtualHost># 定义处理的任何请求。# 这些数值也提供默认值给后面定义的<VirtualHost>容器。# 如果<VirtualHost>中有定义,那么这里定义的指令值将被# <VirtualHost>中的定义所覆盖。#
<IfModule !mpm_winnt.c><IfModule !mpm_neware.c>## 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动# 然后再将它切换为你想要使用的用户或组。## User/Group:运行httpd的用户和组# 在SCO (ODT3)上使用“User nouser”和“Group nogroup”# 在HPUX上,你可能不能以nobody身份使用共享内存,建议创建一个www用户。# 注意一些核心(kernel)在组ID大于60000时拒绝setgid(Group)或semctl(IPC_SET),#节在这些系统上不要使用“Group #-1”。#User nobodyGroup #-1</IfModule></IfModule>
## ServerAdmin:你的邮件地址,当发生问题时Apache将向你发出邮件。# 作为一个出错文档,这个地址显示在server-generated页上,# 例如:admin@your-domain.com#ServerAdmin kreny@sina.com
## ServerName指定Apache用于识别自身的名字和端口号。# 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错## 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。# 参见UseCanonicalName指令## 如果你的主机没有注册DNS名,在这里键入它的IP地址# 无论如何,你必须使用它的IP地址来提供服务,# 这里使用一种容易理解的方式重定向服务ServerName www.dalouis.com:80
## UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。# 当设置为 “Off”时,Apache会使用用户端提供的主机名和端口号。# 当设置为“On”,Apache会使用ServerName指令的值。#UseCanonicalName Off
## DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。# 但是可以使用符号链接和别名来指向到其他的位置。#DocumentRoot “/home/redhat/public_html”
## Apache可以存取的每个目录都可以配置存取权限(包括它的子目录)。## 首先,我们配置一个高限制的特征。
# 这将禁止访问文件系统所在的目录,并添加你希望允许访问的目录块。# 如下所示<Directory />Order Deny,AllowDeny from all</Directory>
## 注意从这里开始你一定要明确地允许哪些特别的特征能够被使用。# – 所以,如果Apache没有象你所期待的那样工作的话,# 请检查你是否在下面明确的指定它可用。#
## 这将改变到你设置的DocumentRoot#<Directory “/home/redhat/public_html”>
## Options:这个指令的值可以是“None”,“All”,或者下列选项的任意组合:# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews## 注意,“MultiViews”必须被显式的指定,“Options All”不能为你提供这个特性。## 这个指令既复杂又重要,请参见#“http://httpd.apache.org/docs-2.0/mod/core.html#optioins”以取得更多的信息。#Options FollowSymLinks
## AllowOverride控制那些被放置在.htaccess文件中的指令。# 它可以是“All”,“None”,或者下列指令的组合:# Options FileInfo AuthConfig Limit#AllowOverride None
## 控制谁可以获得服务。#Order allow,denyAllow from all
</Directory>
## UserDir:指定在得到一个~user请求时将会添加到用户home目录后的目录名。#
UserDir public_html
# 为防止在UserDir指令上的漏洞,对root用户设置# 象“./”这样的UserDir是非常有用的。# 如果你使用Apache 1.3或以上版本,我们强烈建议你# 在你的服务器配置文件中包含下面的行
UserDir disabled root
## 下面是一个使用UserDir指令使一个站点的目录具有只读属性的示例:## <Directory /home/*/public_html># AllowOverride FileInfo AuthConfig Limit Indexes# Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec# <Limit GET POST OPTIONS PROPFIND># Order allow,deny# Allow from all# </Limit># <LimitExcept GET POST OPTIONS PROPFIND># Order deny,allow# Deny from all# </LimitExcept># </Directory>
## DirectoryIndex:定义请求是一个目录时,Apache向用户提供服务的文件名## index.html.var文件(一个类型映象文件)用于提供一个文档处理列表,# 出于同样的目的,也可以使用MultiViews选项,但是它会非常慢。#DirectoryIndex index.php index.html index.html.var
## AccessFileName:在每个目录中查询为目录提供附加配置指令的文件的文件名。# 参见AllowOverride指令。#AccessFileName .htaccess
## 下面的行防止.htaccess和.htpasswd文件被Web客户查看。#<Files ~ “^\.ht”>Order allow,denyDeny from all</Files>
## Typeconfig:定义在哪里查询mime.types文件。#TypeConfig conf/mime.types
## DefaultType:定义当不能确定MIME类型时服务器提供的默认MIME类型。# 如果你的服务主要包含text或HTML文档,“text/plain”是一个好的选择;# 如果大多是二进制文档,诸如软件或图像,你应使用# “application/octer-stream”来防止浏览器象显示文本那样显示二进制文件。#DefaultType text/plain
## mod_mime_magic允许服务器从自己定义自己类型的文件中使用不同的线索(hints),# 这个MIMEMagicFile指令定义hints定义所在的文件。#<IfModule mod_mime_magic.c>MIMEMagicFile conf/magic</IfModule>
## HostnameLookups:指定记录用户端的名字还是IP地址,例如,本指令为on时# 记录主机名,如www.apache.org;为off时记录IP地址,204.62.129.132。# 默认值为off,这要比设为on好得多,因为如果设为on则每个用户端请求都将会# 至少造成对 nameserver 进行一次查询。#HostnameLookups Off
## EnableMMAP:控制是否进行内存转储(如果操作系统支持的话)。# 默认为on,如果你的服务器安装在网络文件系统上(NFS),请关闭它。# 在一些系统上,关闭它会提升系统性能(与文件系统类型无关);# 具体情况请参阅http://httpd.apache.org/docs-2.0/mod/core.html#enablemmap## EnableMMAP off
## EnableSendfile:控制是否使用sendfile kernel支持发送文件# (如果操作系统支持的话)。默认为on,如果你的服务器安装在网络文件系统# (NFS)上,请你关闭它。# 参见http://httpd.apache.org/docs-2.0/mod/core.html#enablesendfile## EnableSendfile off
## ErrorLog:错误日志文件定位。# 如果你没有在<VirtualHost>内定义ErrorLog指令,这个虚拟主机的错误信息# 将记录在这里。如果你在那儿定义了ErrorLog,这些错误信息将记录在你所# 定义的文件里,而不是这儿定义的文件。#ErrorLog logs/error_log
## LogLevel:控制记录在错误日志文件中的日志信息数量。# 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg。#LogLevel warn
## 下面的指令为CustomLog指令定义格式别名。#LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combinedLogFormat “%h %l %u %t \”%r\” %>s %b” commonLogFormat “%{Referer}i -> %U” refererLogFormat “%{User-agent}i” agent
# 你需要安装了mod_logio.c模块才能使用%I和%O。# LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio
## 指定接入日志文件的定位和格式(一般日志格式)。# 如果你没有在<VirtualHost>内定义这个指令,传输信息将记录在这里,# 如果你定义了这个指令,则记录在你指定的位置,而不是这儿定义的位置。#CustomLog logs/access_log common
## 如果你想要记录agent和referer信息,可以使用下面的指令## CustomLog logs/referer_log referer# CustomLog logs/agent_log agent
## 如果你想要使用一个文件记录access,agent和referer信息,# 你可以如下定义这个指令:## CustomLog logs/access_log combined
## ServerTokens# 这个指令定义包含在HTTP回应头中的信息类型。默认为“Full”,# 这表示在回应头中将包含模块中的操作系统类型和编译信息。# 可以设为列各值中的一个:# Full | OS | Minor | Minimal | Major | Prod# Full传达的信息最多,而Prod最少。#ServerTokens Full
## 随意的添加包含服务器版本和虚拟主机名字一行信息到server-generated输出页中# (内部错误文档,FTP目录列表,mod_status和mod_info输出等等,除了CGI错误# 或自定义的错误文档以外)。# 设为“EMail”将包含一个指向ServerAdmin的mailto:连接。# 可以为如下值:On | Off | EMail#ServerSignature On
## Aliases:在这时添加你需要的别名,格式如下:# Alias 别名 真实名## 注意,如果你在别名的未尾包含了“/”,那么在URL中也需要包含“/”。# 因此,“/icons”不是这个示例中的别名。# 如果别名中以“/”结尾,那么真实名也必须以“/”结尾,# 如果别名中省略了结尾的“/”,那么真实名也必须省略。## 我们使用别名“/icons/”来表示FancyIndexed目录列表,如果你不使用、# FancyIndexing,你可以注释掉它。## Alias /icons/ “/usr/local/apache2/icons/”
# <Directory “/usr/local/apache2/icons”># Options Indexes MultiViews# AllowOverride None# Order allow,deny## Allow from all# </Directory>
## 这将改变ServerRoot/manual。这个别名提供了手册页所在的位置,# 即使你改变了你的DocumentRoot。如果你对有无手册页并不在意的话,# 你可以注释掉它。#Alias /manual “/usr/loacl/apache2/manual”
<Directory “/usr/local/apache2/manual”>Options Indexes FollowSymLinks MultiViews IncludesNoExecAddOutputFilter Includes htmlOrder allow,denyAllow from all</Directory>
## ScriptAlias:指定包含服务脚本的目录。# ScriptAliases 本质上与Aliases一样,除了这里的文档在请求时做为程序处理处理以外。# 尾部的“/”规则与Alias一样#ScriptAlias /cgi-bin/ “/usr/loacl/apache2/cgi-bin/”
# 这里是添加php 4支持的指令AddType application/x-httpd-php .phpLoadModule php4_module modules/libphp4.so
<IfModule mod_cgid.c>## 添加mod_cgid.c设置,mod_cgid提供使用cgid进行通讯的UNIX套接字的# 脚本接口路径。## Scriptsock logs/cgisock</IfModule>
## 将”/usr/local/apache2/cgi-bin”改为你的ScriptAliased指定的CGI目录,# 如果你配置了的话。#<Directory “/usr/local/apache2/cgi-bin”>AllowOverride NoneOptions NoneOrder allow,denyAllow from all</Directory>
## Redirect允许你告诉客户端使用存在于服务器名字空间中的文档,# 而不是现在的,这帮助客户定位那些改变了位置的文档。# 例如:# Redirect permanent /foo http://www.example.com/bar
## 控制server-generated目录列表显示的指令#
## IndexOptions:控制server-generated目录列表显示特征。#IndexOptions FancyIndexing VersionSort
## AddIcon* 指令告诉服务器不同扩展名的图象文件如何显示,# 只适用于FancyIndexed指令#AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzipAddIconByType (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 .exeAddIcon /icons/binhex.gif .hqxAddIcon /icons/tar.gif .tarAddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .ivAddIcon /icons/compressed.gif .Z .z .tgz .gz .zipAddIcon /icons/a.gif .ps .ai .epsAddIcon /icons/layout.gif .html .shtml .htm .pdfAddIcon /icons/text.gif .txtAddIcon /icons/c.gif .cAddIcon /icons/p.gif .pl .pyAddIcon /icons/f.gif .forAddIcon /icons/dvi.gif .dviAddIcon /icons/uuencoded.gif .uuAddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tclAddIcon /icons/tex.gif .texAddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..AddIcon /icons/hand.right.gif READMEAddIcon /icons/folder.gif ^^DIRECTORY^^AddIcon /icons/blank.gif ^^BLANKICON^^
## DefaultIcon 为那些没有显式定义图标的文件提供处理#DefaultIcon /icons/unknown.gif
## AddDescription允许你在server-generated索引后放置一个简短的说明。# 只对FancyIndexed指令有效。# 格式:AddDescription “说明” 文件名## AddDescription “GZIP compressed document” .gz# AddDescription “tar archive” .tar# AddDescription “GZIP compressed tar archive” .tgz
## ReadmeName指定服务器默认查找的README文件的名字,并添加到目录列表中## HeaderName指定目录列表前缀文件的文件名ReadmeName README.htmlHeaderName HEADER.html
## IndexIgnore指定目录索引忽略并且不包含在列表中的文件名集合,# 支持shell类型的通配符。#IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
## AddEncoding允许你在信息传送中使用(Mosaic/X 2.1+)解压缩信息,# 注意:不是所有的浏览器都支持这个选项。# 尽管名字相似,但是下列的指令与上面的FancyIndexing定制指令不同。#AddEncoding x-compress ZAddEncoding x-gzip gz tgz
## DefaultLanguage和AddLanguage允许你指定文档的语言。# 这使你可以让用户用容易理解的语言浏览文档。## 指定默认的语言,这意味着所有没有指定语言的包都将使用该语言。# 多数情况下,你也许并不想设置它,除非你确信这样做是正确的。# 通常,不使用确定的语言比使用错误的语言要好。## DefaultLanguage nl## 注意1:作为语言关键字的词缀毫无疑问是不能一样的–采用波兰# 文的文档(网络标准语言代码是pl)将希望使用“AddLanguage pl .po”# 来避免与perl脚本的一般词缀产生二义性。## 注意2: 下面的例子举例说明在一些范例中语言的二字符缩写与它的国家# 的二字符缩写不相同,例如 “Danmark/dk” 和 “Danmark/da” 的比较.## 注意3: 在 “ltz” 的情况下我们使用三字符词缀,违犯了 RFC的规定,# 运行中将修复它并使用RFC1766标准取得参考数据。## Danish (da) – Dutch (nl) – English (en) – Estonian (et)# French (fr) – German (de) – Greek-Modern (el)# Italian (it) – Norwegian (no) – Norwegian Nynorsk (nn) – Korean (ko)# Portugese (pt) – Luxembourgeois* (ltz)# Spanish (es) – Swedish (sv) – Catalan (ca) – Czech(cz)# Polish (pl) – Brazilian Portuguese (pt-br) – Japanese (ja)# Russian (ru) – Croatian (hr)#AddLanguage da .dkAddLanguage nl .nlAddLanguage en .enAddLanguage et .etAddLanguage fr .frAddLanguage de .deAddLanguage he .heAddLanguage el .elAddLanguage it .itAddLanguage ja .jaAddLanguage pl .poAddLanguage ko .koAddLanguage pt .ptAddLanguage nn .nnAddLanguage no .noAddLanguage pt-br .pt-brAddLanguage ltz .ltzAddLanguage ca .caAddLanguage es .esAddLanguage sv .svAddLanguage cz .czAddLanguage ru .ruAddLanguage tw .twAddLanguage zh-tw .twAddLanguage hr .hr
# LanguagePriority允许你在会话过程中优先使用一些语言。## 以优先次序递减的方式列出它们。我们或多或少地采用按字母排列顺序的方式# 排列它们。也许你想要改变这个顺序。LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
## ForceLanguagePriority 允许你为MULTIPLE CHOICES(Prefer)[在通讯的情况下]# 或NOT ACCEPTABLE(Fallback)[没有可接受的语言匹配的情况]提供一个结果页。#ForceLanguagePriority Prefer Fallback
## 为发送出的所有页指定默认的字符集,这总是一个好主意,并且为你的# web站点的国际化打开了大门,这不正是你曾经想要的吗。同样地,指定# 默认字符集有一些小的损害,如一个使用iso-8859-1(latin1)标准命令# 的页面,除非以别的方式指定例如你仅仅以显式方式声明它。# 也有一些与那些总是鼓励你使用默认字符集的javascropt和URL语法有关# 的浏览器安全原因。##AddDefaultCharset ISO-8859-1AddDefaultCharse GB2312
## 一般以文件扩展名的方式使用字符集。也许你想要避免与语言扩展发生# 碰撞,除非你在每次改变后都做了很好的测试。# 参见http://www.iana.org/assignments/character-sets以取得字符集# 的名字列表和它们各自的RFCs。#AddCharset ISO-8859-1 .iso8859-1 .latin1AddCharset ISO-8859-2 .iso8859-2 .latin2 .cenAddCharset ISO-8859-3 .iso8859-3 .latin3AddCharset ISO-8859-4 .iso8859-4 .latin4AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ruAddCharset ISO-8859-6 .iso8859-6 .latin6 .arbAddCharset ISO-8859-7 .iso8859-7 .latin7 .grkAddCharset ISO-8859-8 .iso8859-8 .latin8 .hebAddCharset ISO-8859-9 .iso8859-9 .latin9 .trkAddCharset ISO-2022-JP .iso2022-jp .jisAddCharset ISO-2022-KR .iso2022-kr .kisAddCharset ISO-2022-CN .iso2022-cn .cisAddCharset Big5 .Big5 .big5# 对于俄语,使用了多个字符集(如何使用主要依靠客户端):AddCharset WINDOWS-1251 .cp-1251 .win-1251AddCharset CP866 .cp866AddCharset KOI8-r .koi8-r .koi8-ruAddCharset KOI8-ru .koi8-uk .uaAddCharset ISO-10646-UCS-2 .ucs2AddCharset ISO-10646-UCS-4 .ucs4AddCharset UTF-8 .utf8

# 下面的字符集没有映射到一个特定的标准(iso)上,但是它们在浏览器# 中被广泛的支持。注意那些大写字母。# (它不应该,但是它是为兼容一些浏览器而做)## 参见http://www.iana.org/assianments/character-sets以取得# 它们的列表。但是浏览器支持较少。#AddCharset GB2312 .gb2312 .gbAddCharset utf-7 .utf7AddCharset utf-8 .utf8AddCharset big5 .big5 .b5AddCharset EUC-TW .euc-twAddCharset EUC-JP .euc-jpAddCharset EUC-KR .euc-krAddCharset shift_jis .sjis
## AddType允许你为指定的文件类型添加或覆盖mime.types文件中配置的MIME#AddType application/x-tar .tgzAddType image/x-icon .ico
## AddHandler允许你映射确定的文件扩展名到“handlers”:# 与文件类型无关的行为。这既能编译到服务器中也可以添加到Action指令# 中(看下面)。# 为了在ScriptAliased指令指定的以外使用CGI脚本:#(要使它可用,你还需要在Options中添加“ExecCGI”。## AddHandler cgi-script .cgi
## 对于那些包含他们自己的HTTP头的文件## AddHandler send-as-is asis
## 对于server-parsed imagemap文件:## AddHandler imap-file map
## agemap 文件:##AddHandler imap- 文件映像
## 对于类型映像:(转移资源)#(这是默认的设定以允许Apache的“It Worked”页能多种语言分发)。#AddHandler type-map var
## 过滤器允许你在将它发送到客户端前进行处理。## 为了在服务器端分析包含(SSI)的.shtml文档:# (要执行这个指令,你还需要在Options指令中添加“Includes”。)## AddType text/html .shtml# AddOutputFilter INCLUDES .shtml
## Action让你定义当调用匹配的媒体文件时将要执行的脚本。这将减少# 那些经常使用的CGI脚本的URL路径名的重复输入。# 格式:Action media/type /cgi-script/location# 格式:Action handler-name /cgi-script/location#
## 可配置的错误应答有三种风格:# 1)plain text 2)local redirects 3) external redirects## 一些示例:# ErrorDocument 500 “The server made a boo boo.”# ErrorDocument 404 /missing.html# ErrorDocument 404 “/cgi-bin/missing_handler.pl”# ErrorDocument 402 http://www.example.com/subscription_info.html#
## 综合应用这些指令,我们可以创建一个国际化的出错应答。## 我们使用Alias来重定向任意/error/HTTP_<error>.html.var应答到# 我们的多语言错误消息集合。使用正确的文本替代它。## 通过加入下面的行,你就能够改变这些消息的显示,而不必改变# HTTP_<error>.html.var文件。## Alias /error/include/ “/your/include/path/”## 以将/usr/local/apache2/error/include/下的文件拷贝到/your/inclue/path/下# 开始,你可以创建你自己的文件集合,甚至是其于每个虚拟主机的。# 不管你的ServerSignature如何设置,默认的包含文件将显示你的# Aapche版本号和你的ServerAdmin邮件地址## 国际化的错误文档需要mod_alias,mod_include和mod_negotiation三个# 模块。要激活它们,取消下面30行的注释符号
# Alias /error/ “/usr/local/apache2/error/”## <Directory “/usr/local/apache2/error”># AllowOverride None# Options IncludesNoExec# AddOutputFilter Includes html# AddHandler type-map var# Order allow,deny# Allow from all# LanguagePriority en de es fr it nl sv# ForceLanguagePriority Prefer Fallback# </Directory>## ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.varErrorDocument 403 /error.php# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var# ErrorDocument 410 /error/HTTP_GONE.html.var# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var# ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
## 下面的命令更改标准的HTTP应答行为以处理己知的浏览器问题。#BrowserMatch “Mozilla/2” nokeepaliveBrowserMatch “MSIE 4\.0b2;” nokeepalive downgrade-1.0 force-response-1.0BrowserMatch “RealPlayer 4\.0” force-response-1.0BrowserMatch “Java/1\.0” force-response-1.0BrowserMatch “JDK/1\.0” force-response-1.0
## 下面命令关闭对那些没有尾部“/”的目录的非GET请求的重定向,# 这些命令修复了微软的采用DAV方法不能正确处理重定向的WEB文件夹的问题。# Apple下的DAV文件系统和Gnome下的VFS对DAV的支持也是采用这样的方法# 进行处理的。#BrowserMatch “Microsoft Data Access Internet Publishing Provider” redirect-carefullyBrowserMatch “^WebDrive” redirect-carefullyBrowserMatch “^WebDAVFS/1.[012]” redirect-carefullyBrowserMatch “^gnome-vfs” redirect-carefully
## 允许你使用URL:http://servername/server-status来通过mod_status生# 成并报告服务器状态信息。改变.example.com为你自己的域名。## <Location /server-status># SetHandler server-status# Order deny,allow# Deny from all# Allow from .example.com# </Location>
## 允许使用URL:http://servername/server-info来远程报告服务器配置信息# (需要mod_info.c支持)。改变“.example.com”为你自己的域名。## <Location /server-info># SetHandler server-info# Order deny,allow# Deny from all# Allow from .example.com# </Location>
## 代理服务器命令,去掉下面的行使代理服务可用。## <IfModule mod_proxy.c># ProxyRequests On# <Proxy *># Order deny,allow# Deny from all# Allow from .example.com# </Proxy>
## 安装或关闭HTTP/1.1“通道”头处理。# (“Full”添加服务器版本信息,“Block”移掉所有输出“通道”头信息。# 可以设为下面各选项之一:Off | On | Full | Block## ProxyVia On
# 最好为代理服务安装高速缓冲,去掉下面几行的注释符号:# (没有CacheRoot则不缓冲)## CacheRoot “/usr/local/apache2/proxy”# CacheSize 5# CacheGcInterval 4# CacheMaxExpire 24# CacheLastModifiedFactor 01# CacheDefaultExpire 1# NoCache a-domain.com another-domain.edu joes.garage-sale.com
# </IfModule># 代理命令结束。
## 附加的特定模块配置。#<IfModule mod_ssl.c>Include conf/ssl.conf</IfModule>
## 第三区:虚拟主机## VirtualHost:你可以通过设置虚拟主机容器以实现在你的主机上保有多个# 域名/主机名。大多数配置信息只使用基于名字的虚拟主机,因此服务器# 不必担心IP地址的问题,下面的命令以*号代替虚拟主机名。## 在你试着配置你的虚拟主机以前,请参见# URL:http://httpd.apache.org/docs-2.0/vhosts/>以取得更多的信息。## 你可以使用命令行选项“-S”来检验你的虚拟主机配置。
## 使用基于名字的虚拟主机。## NameVirtualHost *
## 虚拟主机示例:# 几乎所有的Apache命令都可以在虚拟主机容器中使用。# 第一个虚拟主机区是用于向服务名未知的请求进行应答的配置。## <VirtualHost *># ServerAdmin webmaster@dummy-host.example.com# DocumentRoot /www/docs/dummy-host.example.com# ServerName dummy-host.example.com# ErrorLog logs/dummy-host.example.com-error_log# CustomLog logs/dummy-host.example.com-access_log commom# </virtualHost>

Windows+Apache 配置多站点虚拟主机

NameVirtualHost xx.xxx.xx.xx:80

<VirtualHost xx.xxx.xx.xx:80>
  DocumentRoot "D:/server/htdocs"
</VirtualHost>

<VirtualHost xx.xxx.xx.xx:80>
  ServerName forums.phpker.com
  ServerAlias forums.phpker.com
  ServerAdmin webmaster@phpker.com
  DocumentRoot "D:/server/htdocs/bbs"
</VirtualHost>

<VirtualHost xx.xxx.xx.xx:80>
  ServerName mail.phpker.com
  ServerAlias mail.phpker.com
  ServerAdmin webmaster@phpker.com
  DocumentRoot "D:/server/htdocs/mail"
</VirtualHost>

<VirtualHost xx.xxx.xx.xx:80>
  ServerName phpker.com
  ServerAlias phpker.com
  ServerAdmin webmaster@phpker.com
  DocumentRoot "D:/server/htdocs"
</VirtualHost>
关于Windows下Apache使用虚拟主机(多域名多站点)的设置
只说怎样配置虚拟主机,其它设置略找到
ServerAdmin
前面打上”#”(不含双引号),也就是把这段注释掉.找到
DocumentRoot “D:/Program Files/Apache2.2/htdocs”(这个是你安装apache的位置,自己应该晓得)

把这段也打上”#”,注释掉.

假如,虚拟空间的各个站点都在D盘的wwwroot目录下,那么请添加这段

Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

这个很重要,接下来,就把各个站点都放在wwwroot目录下,才能正常访问.

找到
#Include conf/extra/httpd-vhosts.conf

取消前面的#注释,使之生效

接着就可以到extra目录中,对httpd-vhosts.conf进行设置,添加站点
例子如下:
NameVirtualHost 77.77.88.77:80

DirectoryIndex index.html index.php

ServerAdmin webmaster@phpker.com
DocumentRoot D:/wwwroot/cms
ServerName www.phpker.com
ServerAlias www.phpker.com

如果,需要用到rewrite的html静态功能,
请在httpd.conf文件中,找到
#LoadModule rewrite_module modules/mod_rewrite.so

取消掉前面的#注释,使mod_rewrite.so模块生效

并且把所有的
AllowOverride None

更改为
AllowOverride All

好了,一切都ok了,别忘记restat Apache

大型网站的架构设计问题–大型高并发高负载网站的系统架构

随着中国大型IT企业信息化速度的加快,大部分应用的数据量和访问量都急剧增加,大型企业网站正面临性能和高数据访问量的压力,而且对存储、安全以及信息检索等等方面都提出了更高的要求……

    本文中,我想通过几个国外大型IT企业及网站的成功案例,从Web技术人员角度探讨如何积极地应对国内大型网站即将面临的扩展(主要是技术方面,而较少涉及管理及营销等方面)矛盾。

一、 国外大型IT网站的成功之道
(一) MySpace
    今天,MySpace已经成为全球众口皆碑的社区网站之王。尽管一流和营销和管理经验自然是每个IT企业取得成功的首要因素,但是本节中我们却抛弃这一点,而主要着眼于探讨在数次面临系统扩张的紧急关头MySpace是如何从技术方面采取应对策略的。
第一代架构—添置更多的Web服务器
    MySpace最初的系统很小,只有两台Web服务器(分担处理用户请求的工作量)和一个数据库服务器(所有数据都存储在这一个地方)。那时使用的是Dell双CPU、4G内存的系统。在早期阶段,MySpace基本是通过添置更多Web服务器来对付用户暴增问题的。但到在2004年早期,在MySpace用户数增长到五十万后,其数据库服务器已经开始疲于奔命了。

第二代架构—增加数据库服务器
    与增加Web服务器不同,增加数据库并没那么简单。如果一个站点由多个数据库支持,设计者必须考虑的是,如何在保证数据一致性的前提下让多个数据库分担压力。

    MySpace运行在三个SQL Server数据库服务器上—一个为主,所有的新数据都向它提交,然后由它复制到其它两个;另两个数据库服务器全力向用户供给数据,用以在博客和个人资料栏显示。这种方式在一段时间内效果很好——只要增加数据库服务器,加大硬盘,就可以应对用户数和访问量的增加。

    这一次的数据库架构按照垂直分割模式设计,不同的数据库服务于站点的不同功能,如登录、用户资料和博客。垂直分割策略利于多个数据库分担访问压力,当用户要求增加新功能时,MySpace只需要投入新的数据库加以支持。在账户到达二百万后,MySpace还从存储设备与数据库服务器直接交互的方式切换到SAN(存储区域网络)—用高带宽、专门设计的网络将大量磁盘存储设备连接在一起,而数据库连接到SAN。这项措施极大提升了系统性能、正常运行时间和可靠性。然而,当用户继续增加到三百万后,垂直分割策略也变得难以维持下去。

第三代架构—转到分布式计算架构
    几经折腾,最终,MySpace将目光移到分布式计算架构——它在物理上分布的众多服务器,整体必须逻辑上等同于单台机器。拿数据库来说,就不能再像过去那样将应用拆分,再以不同数据库分别支持,而必须将整个站点看作一个应用。现在,数据库模型里只有一个用户表,支持博客、个人资料和其他核心功能的数据都存储在相同数据库。

    既然所有的核心数据逻辑上都组织到一个数据库,那么MySpace必须找到新的办法以分担负荷——显然,运行在普通硬件上的单个数据库服务器是无能为力的。这次,不再按站点功能和应用分割数据库,MySpace开始将它的用户按每百万一组分割,然后将各组的全部数据分别存入独立的SQL Server实例。目前,MySpace的每台数据库服务器实际运行两个SQL Server实例,也就是说每台服务器服务大约二百万用户。据MySpace的技术人员说,以后还可以按照这种模式以更小粒度划分架构,从而优化负荷分担。

第四代架构—求助于微软方案
    2005年早期,账户达到九百万,MySpace开始用微软的C#编写ASP.NET程序。在收到一定成效后,MySpace开始大规模迁移到ASP.NET。
    账户达到一千万时,MySpace再次遭遇存储瓶颈问题。SAN的引入解决了早期一些性能问题,但站点目前的要求已经开始周期性超越SAN的I/O容量——即它从磁盘存储系统读写数据的极限速度。

第五代架构—增加数据缓存层并转到支持64位处理器的SQL Server 2005
    2005年春天,MySpace账户达到一千七百万,MySpace又启用了新的策略以减轻存储系统压力,即增加数据缓存层——位于Web服务器和数据库服务器之间,其唯一职能是在内存中建立被频繁请求数据对象的副本,如此一来,不访问数据库也可以向Web应用供给数据。

    2005年中期,服务账户数达到两千六百万时,MySpace因为我们对内存的渴求而切换到了还处于beta测试的支持64位处理器的SQL Server 2005。升级到SQL Server 2005和64位Windows Server 2003后,MySpace每台服务器配备了32G内存,后于2006年再次将配置标准提升到64G。

    事实上,MySpace的Web服务器和数据库仍然经常发生超负荷,其用户频繁遭遇“意外错误”和“站点离线维护”等告示,他们不得不在论坛抱怨不停……

    MySpace正是在这样不断重构站点软件、数据库和存储系统中,才一步步走到今天。事实上,MySpace已经成功解决了很多系统扩展性问题,其中存在相当的经验值得我们借鉴。MySpace系统架构到目前为止保持了相对稳定,但其技术人员仍然在为SQL Server支持的同时连接数等方面继续攻坚,尽可能把事情做到最好。

(二) Amazon
    亚马逊书店无疑是电子商务发展的里程碑。2000年到现在,世界网络业腥风血雨。Amazon曾经成为网络泡沫的头号代表。如今,当这个“最大的泡沫”用几经易改的数字把自己变成了坚实的IT巨人。

    历览Amazon发展过程,其成功经验在于,它创造性地进行了电子商务中每一环节的探索,包括系统平台的建设,程序编写、网站设立、配送系统等等方面。用Amazon当家人贝索斯的话说就是,“在现实世界的商店最有力的武器就是地段,地段,地段,而对于我们来说最重要的三件事就是技术,技术,技术。”

(三) eBay
    eBay是世界闻名的拍卖网站,eBay公司通信部主管凯文•帕斯格拉夫认为,“eBay成功的最重要原因在于公司管理和服务。”
    其成功的奥秘可以列举为以下几点:
    ①敢为天下先—在网络尚不普及的时代,eBay率先进入网络拍卖领域;
    ②依托虚拟商场所产生的特有的“零库存”是eBay公司取得成功的另一个重要原因。该公司的核心业务没有任何库存风险,所有的商品都是由客户提供,它只需要负责提供虚拟的拍卖平台—网络和软件。所以,eBay公司的财务报表上不会出现“库存费用”和“保管费用”等。
③自eBay公司成立开始,它就一直遵循两条“黄金原则”:建设虚拟社区,给网民以家的感觉;保证网站稳定安全地运行。

二、 国内大型网站开发时的几点建议
    从本节开始,我们将结合国内外大型IT网站在技术扩展方面的沉痛教训和成功经验,探讨在如今刚刚开始的Web 2.0时代如何应对国内网站即将面临的数据访问量增加(甚至是急剧膨胀)的问题,并提出一些供参考的策略和建议。

(四) 搭建科学的系统架构
    构建大型的商业网站绝对不可能像构建普通的小型网站一样一蹴而就,需要从严格的软件工程管理的角度进行认真规划,有步骤有逻辑地进行开发。对于大型网站来说,所采用的技术涉及面极其广泛,从硬件到软件、编程语言、数据库、Web服务器、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。以著名的Yahoo!为例,他们的每一个大型网站工程都需要大量相应专业人员的参与。

(五) 页面静态化
    可不要小看纯静态化的HTML页面!其实在很多情况下,HTML往往意味着“效率最高、消耗最小”,所以我们尽可能使我们的网站上的页面采用静态页面来实现。但是,对于大量内容并且频繁更新的网站,我们无法全部手动实现,因此可以开发相应的自动化更新工具,例如我们常见的信息发布系统CMS。像我们经常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的。信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

(六) 存储问题
    存储也是一个大问题,一种是小文件的存储,比如图片这类;另一种是大文件的存储,比如搜索引擎的索引。
大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化以保证更高的系统消耗和执行效率。

(七) 数据库技术—集群和库表散列
    对于大型网站而言,使用大型的数据库服务器是必须的事情。但是,在面对大量访问的时候,数据库的瓶颈仍然会显现出来,这时一台数据库将很快无法满足应用,于是我们需要借助于数据库集群或者库表散列技术。

    在数据库集群方面,很多数据库厂商都有自己的解决方案,Oracle、Sybase、SQL Server等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案。因此,你使用了什么样的数据库,就参考相应的解决方案来实施即可。

    上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用数据库类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,其中,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。在这一方面一个现成的例子就是搜狐。它的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

(八) 缓存策略
    这绝对不单指低级的缓存技术相关的编程,应从整个架构角度着眼,深入研究Web服务器、数据库服务器的各层级的缓冲策略,最后才是低级的缓冲技术的编程。不同的Web服务器、数据库服务器及Web编程语言都有自己不同的缓冲策略。例如数据库存储方面,SQL Serve 2005中的主动式缓存机制,Oracle数据的cache group技术,Hibernate的缓存包括Session的缓存和SessionFactory的缓存;Web服务器方面,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力,IIS缓冲器技术;至于web开发语言,所用缓存技术更存在很大不同,例如ASP.NET 2.0中提出了两种缓存应用程序数据和缓存服务页输出的策略,这两种缓存技术相互独立但不相互排斥,PHP有Pear的Cache模块,等等。

(九) 镜像
    镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

(十) 负载均衡
    负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。
负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,基于LAMP解决方案的Lighttped+Squid是相当不错的解决负载均衡和加速系统的有效方式。

(十一) 硬件四层交换
    第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

    在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。

(十二) 软件四层交换
    大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的。

    一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。

(十三) 软件投资问题
    据报导,目前国内除了一些上市企业和特别大知名大公司以外,很少有企业在成本中考虑正版软件的购置费用。这种思维极有可能给中国互联网带来噩梦。如果一些公司真正面临软件资金方面的困难,完全可以考虑使用开源世界的LAMP解决方案(Linux+Apache+MySQL+Perl、PHP或者Python Web编程语言);否则,随着我国加入WTO范围的不断扩大,盗版打击必然越来越严。因此,“苟且偷生”必将自食其果。

    另外,随着网络带宽日渐提升,WEB 2.0技术必将影响到网络世界的几乎每一个角落。因此,如何积聚技术人员进行技术攻关并进一步加强安全防范也成为一个日益严峻的问题,宜尽早纳入到公司的议事日程。
  
四、 总结
    中国电子商务真正理性发展的一个标志,是大量的传统企业实实在在地开始用互联网来处理商务、做生意,而现在这样的浪潮已经开始。北京发行集团,联合SINA、6688.com等单位共同推出的网上虚拟书店—新新书店就是这样的一个标志。

    随着网络带宽日渐提升,随着网络理念和WEB 2.0技术的断深入人心,各种B2B、B2C、C2C等电子商务模式很可能以立体交叉方式整合到各种大型商务网站中来。因此,作为公司的技术人员,作为临危救驾的“白衣骑士”,如何应对海量存储、海量访问问题,海量信息检索的问题,日益严峻的安全问题,等等,已经刻不容缓。