apache配置⽂件:f配置详解
匏瓜Apache的配置⽂件f参数含义详解
Apache的配置由f⽂件配置,因此下⾯的配置指令都是在f⽂件中修改。
主站点的配置(基本配置)
(1) 基本配置:
ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。其它指定的⽬录如果没有指定绝对路径,则⽬录是相对于该⽬录。PidFile logs/httpd.pid #第⼀个httpd进程(所有其他进程的⽗进程)的进程号⽂件位置。
Listen 80 #服务器监听的端⼝号。
ServerName :80 #主站点名称(⽹站的主机名)。
ServerAdmin #管理员的邮件地址。
DocumentRoot "/mnt/web/clusting" #主站点的⽹页存储位置。
以下是对主站点的⽬录进⾏访问控制:
<directory "="" mnt="" web="" clusting"="">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
在上⾯这段⽬录属性配置中,主要有下⾯的选项:
Options:配置在特定⽬录使⽤哪些特性,常⽤的值和基本含义如下:你在哪里英文怎么说
ExecCGI: 在该⽬录下允许执⾏CGI脚本。
FollowSymLinks: 在该⽬录下允许⽂件系统使⽤符号连接。
Indexes: 当⽤户访问该⽬录时,如果⽤户找不到DirectoryIndex指定的主页⽂件(例如index.html),则
返回该⽬录下的⽂件列表给⽤户。SymLinksIfOwnerMatch: 当使⽤符号连接时,只有当符号连接的⽂件拥有者与实际⽂件的拥有者相同时才可以访问。AllowOverride:允许存在于.htaccess⽂件中的指令类型(.htaccess⽂件名是可以改变的,其⽂件名由AccessFileName指令决定):None: 当AllowOverride被设置为None时。不搜索该⽬录下的.htaccess⽂件(可以减⼩服务器开销)。
All: 在.htaccess⽂件中可以使⽤所有的指令。
Order:控制在访问时Allow和Deny两个访问规则哪个优先:
Allow:允许访问的主机列表(可⽤域名或⼦⽹,例如:Allow from 192.168.0.0/16)。
Deny:拒绝访问的主机列表。
DirectoryIndex index.html index.htm index. #主页⽂件的设置(本例将主页⽂件设置为:index.html,index.htm和index.php)
(2) 服务器的优化 (MPM: Multi-Processing Modules)
apache2主要的优势就是对多处理器的⽀持更好,在编译时同过使⽤–with-mpm选项来决定apache2的⼯作模式。如果知道当前的apache2使⽤什么⼯作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其⼯作⽅式:star movies
prefork:如果httpd -l列出prefork.c,则需要对下⾯的段进⾏配置:
StartServers 5 #启动apache时启动的httpd进程个数。
MinSpareServers 5 #服务器保持的最⼩空闲进程数。
MaxSpareServers 10 #服务器保持的最⼤空闲进程数。
MaxClients 150 #最⼤并发连接数。
MaxRequestsPerChild 1000 #每个⼦进程被请求服务多少次后被kill掉。0表⽰不限制,推荐设置为1000。
在该⼯作模式下,服务器启动后起动5个httpd进程(加⽗进程共6个,通过ps -ax|grep httpd命令可以看到)。当有⽤户连接时,apache会使⽤
⼀个空闲进程为该连接服务,同时⽗进程会fork⼀个⼦进程。直到内存中的空闲进程达到 MaxSpareServers。该模式是为了兼容⼀些旧版本的程序。我缺省编译时的选项。
worker:如果httpd -l列出worker.c,则需要对下⾯的段进⾏配置:
StartServers 2 #启动apache时启动的httpd进程个数。
MaxClients 150 #最⼤并发连接数。
IXDBA社区论坛
MinSpareThreads 25 #服务器保持的最⼩空闲线程数。
MaxSpareThreads 75 #服务器保持的最⼤空闲线程数。
ThreadsPerChild 25 #每个⼦进程的产⽣的线程数。
MaxRequestsPerChild 0 #每个⼦进程被请求服务多少次后被kill掉。0表⽰不限制,推荐设置为1000。
该模式是由线程来监听客户的连接。当有新客户连接时,由其中的⼀个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产⽣的线程数是固定的 (ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够⽤时,服务器⾃动fork⼀个进程,再产⽣25个线程。
perchild:如果httpd -l列出perchild.c,则需要对下⾯的段进⾏配置:
最新好听的英文歌曲
NumServers 5 #服务器启动时启动的⼦进程数
StartThreads 5 #每个⼦进程启动时启动的线程数
MinSpareThreads 5 #内存中的最⼩空闲线程数
MaxSpareThreads 10 #最⼤空闲线程数
MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制。
MaxRequestsPerChild 10000 #每个⼦进程服务多少次后被重新fork。0表⽰不受限制。
该模式下,⼦进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,⼜空闲的线程提供服务。如果空闲线程数不够,⼦进程⾃动产⽣线程来为新的连接服务。该模式⽤于多站点服务器。
(3) HTTP返头回信息配置:
ServerTokens Prod #该参数设置http头部返回的apache版本信息,可⽤的值和含义如下:
Prod:仅软件名称,例如:apache
Major:包括主版本号,例如:apache/2
Minor:包括次版本号,例如:apache/2.0
Min:仅apache的完整版本号,例如:apache/2.0.54
OS:包括操作系统类型,例如:apache/2.0.54(Unix)
Full:包括apache⽀持的模块及模块版本号,例如:Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g
ServerSignature Off #在页⾯产⽣错误时是否出现服务器版本信息。推荐设置为Off
(4) 持久性连接设置
KeepAlive On #开启持久性连接功能。即当客户端连接到服务器,下载完数据后仍然保持连接状态。
MaxKeepAliveRequests 100 #⼀个连接服务的最多请求次数。
KeepAliveTimeout 30 #持续连接多长时间,该连接没有再请求数据,则断开该连接。缺省为15秒。
别名设置
对于不在DocumentRoot指定的⽬录内的页⾯,既可以使⽤符号连接,也可以使⽤别名。别名的设置如下:
<directory "="" var="" www="" download"=""> #对该⽬录进⾏访问控制设置
Options Indexes MultiViews
AllowOverride AuthConfig
Order allow,deny
csclAllow from all
CGI设置
<directory "="" usr="" local="" apache2="" cgi-bin"=""> #设置⽬录属性
AllowOverride None
Options None
Order allow,deny
Allow from all
个⼈主页的设置 (public_html)authorityoriented
chmod 755 /home/bearzhang #
使其它⽤户能够读取该⽂件。
⽇志的设置
(1)错误⽇志的设置
ErrorLog logs/error_log #⽇志的保存位置october怎么读
IXDBA社区论坛
LogLevel warn #⽇志的级别
显⽰的格式⽇下:
[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] access to /download/ failed, reason: ur admin not allowed access (2)访问⽇志设置
⽇志的缺省格式有如下⼏种:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{Ur-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common #common为⽇志格式名称
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{Ur-agent}i" agent
wep是什么意思CustomLog logs/access_log common
格式中的各个参数如下:
%h –客户端的ip地址或主机名
%l –The 这是由客户端 identd 判断的RFC 1413⾝份,输出中的符号 "-" 表⽰此处信息⽆效。
%u –由HTTP认证系统得到的访问该⽹页的客户名。有认证时才有效,输出中的符号 "-" 表⽰此处信息⽆效。
%t –服务器完成对请求的处理时的时间。
"%r" –引号中是客户发出的包含了许多有⽤信息的请求内容。
%>s –这个是服务器返回给客户端的状态码。
%b –最后这项是返回给客户端的不包括响应头的字节数。
"%{Referer}i" –此项指明了该请求是从被哪个⽹页提交过来的。
"%{Ur-Agent}i" –此项是客户浏览器提供的浏览器识别信息。
下⾯是⼀段访问⽇志的实例:
192.168.10.22 – bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228
192.168.10.22 – - [10/Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 -
192.168.10.22 – - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 -
⽤户认证的配置
(1)in f:
AccessFileName .htaccess
………
Alias /download/ "/var/www/download/"
<directory "="" var="" www="" download"="">
青岛设计学校Options Indexes
AllowOverride AuthConfig
(2) create a password file:
/usr/local/apache2/bin/htpasswd -c /var/httpur/passwords bearzhang
(3)onfigure the rver to request a password and tell the rver which urs are allowed access.
vi /var/www/download/.htaccess:
AuthType Basic
AuthName "Restricted Files"
AuthUrFile /var/httpur/passwords
Require ur bearzhang
#Require valid-ur #all valid ur
虚拟主机的配置
(1)基于IP地址的虚拟主机配置
Listen 80
DocumentRoot /www/example1
DocumentRoot /www/example2
ample2
(2) 基于IP和多端⼝的虚拟主机配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
DocumentRoot /www/example1-80
DocumentRoot /www/example1-8080 DocumentRoot /www/example2-80
ample1
DocumentRoot /www/example2-8080 ample2
(3)单个IP地址的服务器上基于域名的虚拟主机配置:# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP address NameVirtualHost *:80
DocumentRoot /www/example1
*.
# Other directives here
DocumentRoot /www/example2
ample2
# Other directives here
(4)在多个IP地址的服务器上配置基于域名的虚拟主机:Listen 80
# This is the "main" rver running on 172.20.30.40 ServerName
DocumentRoot /www/mainrver
# This is the other address
NameVirtualHost 172.20.30.50
DocumentRoot /www/example1
# Other directives here …
IXDBA社区论坛
DocumentRoot /www/example2
ample2
# Other directives here …
(5)在不同的端⼝上运⾏不同的站点(基于多端⼝的服务器上配置基于域名的虚拟主机):
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
DocumentRoot /www/domain-80
DocumentRoot /www/domain-8080
ample2
DocumentRoot /www/otherdomain-80
ample2
DocumentRoot /www/otherdomain-8080
(6)基于域名和基于IP的混合虚拟主机的配置:
Listen 80
NameVirtualHost 172.20.30.40
DocumentRoot /www/example1
DocumentRoot /www/example2
ample2
DocumentRoot /www/example3
ample3
SSL加密的配置
⾸先在配置之前先来了解⼀些基本概念:
证书的概念:⾸先要有⼀个根证书,然后⽤根证书来签发服务器证书和客户证书,⼀般理解:服务器
证书和客户证书是平级关系。SSL必须安装服务器证书来认证。因此:在此环境中,⾄少必须有三个证书:根证书,服务器证书,客户端证书。在⽣成证书之前,⼀般会有⼀个私钥,同时⽤私钥⽣成证书请求,再利⽤证书服务器的根证来签发证书。
SSL所使⽤的证书可以⾃⼰⽣成,也可以通过⼀个商业性
CA(如Verisign 或 Thawte)签署证书。
签发证书的问题:如果使⽤的是商业证书,具体的签署⽅法请查看相关销售商的说明;如果是知⼰签发的证书,可以使⽤openssl⾃带的CA.sh脚本⼯具。
IXDBA社区论坛
如果不为单独的客户端签发证书,客户端证书可以不⽤⽣成,客户端与服务器端使⽤相同的证书。
风筝英语(1) f 配置⽂件中的主要参数配置如下:
Listen 443
SSLPassPhraDialog buildin
#SSLPassPhraDialog exec:/path/to/program
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/usr/local/apache2/logs/ssl_mutex