一丶Apache常用目录详解
1) /etc/httpd/conf/httpd.conf
httpd.conf是Apache的主配文件,整个Apache也不过就是这个配置文件,里面几乎包含了所有的配置。有的distribution都将这个文件拆分成数个小文件分别管理不同的参数。但是主要配置文件还是以这个文件为主。
  • /etc/httpd/conf/logs链接到/var/log/httpd,用于存放默认主服务器的日志文件;
  • /etc/httpd/conf/modules链接到/usr/lib64/httpd/modules,用于存放所有httpd所能装载的DSO模块文件;
  • /etc/httpd/conf/run链接到/var/run/httpd,用来存放主进程的PidFile。
2) /etc/httpd/conf.d/*.conf
如果你不想要修改原始配置文件httpd.conf的话,那么可以将你自己的额外参数文件独立出来,注意以.conf结尾放在/etc/httpd/conf.d/目录下。重启Apache的时候,这个配置文件就会被读入主配文件之中了。他的好处就是当你在进行系统升级的时候,几乎不需要改动原本的配置文件,只要将你自己的额外参数文件复制到正确的地点即可,维护起来非常方便。
3) /etc/httpd/modules/
Apache支持很多的外挂模块,例如PHP以及SSL都是Apache外挂的一种。所有你想要使用的模块文件默认是放置在这个目录当中的。
4) /var/www/html/
这个目录就是Apache默认的存放首页的目录(默认是index.html),网站根目录
5) /var/www/error/
当因为服务器设置错误,或是浏览器要求的数据错误时,在浏览器上出现的错误信息就以这个目录的默认信息为主
6) /var/www/icons/
这个目录提供Apache默认给予的一些小图示,可以随意使用。
7) /var/www/cgi-bin/
默认给一些可执行的CGI(网页程序)程序放置的目录。
8) /var/log/httpd/
默认的Apache日志文件都放在这里,对于流量比较大的网站来说,这里的数据文件可能会非常大。
9) /usr/sbin/apachectl
这个就是Apache的主要执行文件,这个执行文件其实就是一个Shell Script而已,他可以主动地侦测系统上面的一些设置值,好让你启动Apache时更简单一些。
10) /usr/sbin/httpd
这个是主要的Apache二进制执行文件。
11) /usr/bin/htpasswd
在当你想要登入某些网页时你需要输入帐号与密码,那Apache本身就提供一个最基本的密码保护方式,该密码的产生就是通过这个命令来实现的。Apache密码保护
二丶Apache配置文件详解及优化(http.conf)
ServerTokens OS //此参数告知客户端我们服务器的版本和操作系统而已,不需要改动他;如果不在乎你的系统信息被远程用户查询到,则可以将这个项目注释掉(不建议)
ServerRoot  “/etc/httpd” //服务器设置的最顶层目录,有点类似于chroot那种感觉。包括logs , modules等的数据都应该要放置在此目录下面(如果这些配置没有声明成绝对路径的话)
PidFile run/httpd.pid //放置PID的文件,可方便apache软件的管理。只有相对路径考虑ServerRoot设置值,所以文件在/etc/httpd/run/httpd.pid
Timeout 60 //不论接收或发送,当持续连接等待超过60秒则该次连接就中断一般来说,此数值在300秒左右即可,不需要修改这个原始值
KeepAlive on //最好把默认值”Off”修改为”On”,表示是否允许持续性的连接,也就是一个TCP连接可以具有多个文件资料传送的要求;比如,如果你的网页内含有很多图片文件,那么这一次连接就会将所有的数据传送完,而不必每一个图片都需要进行一次TCP连接。
MaxKeepAliveRequests 100 //可以将默认的100改成500或更高与上一个设置的值KeepAlive有关,当KeepAlive的值设置为On的时候,这个数值可以决定该次连接能够传输的最大传输数量。为了提高效率则可以改大一点。0代表不限制
KeepAliveTimeout 65 //在KeepAlive设置为”On”的情况下,该次连接在最后一次传输后等待延迟的秒数,当超过该秒数的时候该连接中断。保持默认值即可,如果设置的值太高(等待时间较长)在较忙碌的系统上面将会有较多的Apache程序占用资源,可能有效率方面的问题。
<IfModule prefork.c>
StartServers    8 //启动Apache的时候,唤醒几个PID来处理服务的。Apache使用了进程预派生的技术来处理请求,大大提高了响应速度
MinSpareServers   5 //最小预备使用的PID数量
MaxSpareServers  20 //最大预备使用的PID数量
ServerLimit    4096 //服务器的限制
MaxClients    4096 //最多可以有多少个客户端同时连接到Apache,最大的同时连接数量,也就是process不会超过这一数值。这个MaxClients设置值可以控制同时连上www服务器的总连接要求数量,也可以将其看作是最高实时在线人数。不过要注意的是:这个值并非越大越好因为他会消耗物理内存(与process有关),所以如果你设置太高导致超出物理内存,能够容许的范围,那么效率就会大大降低(因为会跑SWAP),此外,MaxClients也在Apache编译的时候就指定最大值了,所以你也无法超出系统最大值,除非你重新编译
Apache MaxRequestsPerChild  4000 //每个程序能够提供的最大传输次数要求。举例来说:如果有个用户连上服务器之后,要求数百个网页,当他的要求数量超过这个值的时候则该程序会被丢弃,另外切换一个新程序。这个设置可以有效地管理每个process在系统上存活的时间。根据观察所得,新程序的效果较好。
</IfModule>
<IfModule worker.c> //MPM的另一个模型
StartServers             8
MaxClients              4000
MinSpareThreads           25
MaxSpareThreads           75
ThreadsPerChild           75 //每个子进程的最大并发线程数
MaxRequestsPerChild     0
</IfModule>
上面的prefork和worker其实是两个MPM模型的参数,可能会存在第三个模型event。默认的项目配置对于一般中小型网站来说已经很够用了,网站的流量比较大,可以修订一下里面的数值,设置的数值越大代表系统会启动越多的程序来提供Apache的服务,反映速度就比较快。Redhat和CentOS将这两个模块分别放到了不同的执行文件中,分别是/usr/sbin/httpd(prefork模块);/usr/sbin/httpd.worker(worker模块),/etc/sysconfig/httpd 这个文件决定了Apache使用哪一个模块,可以通过修改这个文件来切换不同的工作模式。参数HTTPD=/usr/sbin/httpd.worker
Listen 80 //监听的端口,如有多块网卡,默认监听所有网卡
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so //启动加载的模块,Apache提供了非常多的模块供我们使用
Include conf.d/*.conf //加载的配置文件
ServerAdmin root@localhost //系统管理员的邮箱,当网站出现问题的时候,错误信息会显示的联系邮箱
ServerName www.example.com:80 //默认是不需要指定的,服务器通过名字解析过程来获得自己的名字,但如果解析有问题(如反向解析不正确),或者没有DNS名字,也可以在这里指定IP地址,当这项不正确的时候服务器不能正常启动。前面启动Apache时候提示正在启动 httpd:httpd: apr_sockaddr_info_get() failed forjustin httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1forServerName,解决方法就是启动该项把www.example.com:80修改为自己的域名或者直接修改为localhost
UseCanonicalName Off //如果客户端提供了主机名和端口,Apache将会使用客户端提供的这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,并且对于同样的客户端可用。CGI变量SERVER_NAME和SERVER_PORT也会由客户端提供的值来构建
DocumentRoot   “/var/www/html” //配置放置首页的目录
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
</Directory> //下面会有详细介绍,例如:
<Directory “/var/www/html”> //使用Directory指定了一个绝对路径的目录
Options -Indexes FollowSymLinks //Options(目录参数),此设置值表示在这个目录内能够让Apache进行的操作,也就是针对Apache的程序的权限设置。主要的参数值有:
  • Indexes:如果在此目录下找不到首页文件(默认为index.html)时,就显示整个目录下的文件名,至于首页文件名则与DirectoryIndex设置的值有关,建议注释掉Indexes
  • FollowSymLinks:Fllow Symolic Links的缩写,字面意义是让连接文件可以生效。首页的目录是在/var/www/html,既然是WWW的根目录,理论上就像被chroot一般。一般说来说被chroot的程序无法离开其目录,也就是说,默认的情况下,你在/var/www/html下面的连接文件只要链接到非此目录的其他地方,则该连接文件默认是失效的。但是使用这个设置可以让链接有效的离开本目录,默认为禁用
  • ExecCGI:让此目录具有执行CGI的权限,非常重要。举例来说,OpenWebMail使用了很多Perl程序,你要让OpenWebMail可以执行,就需要在该程序所在目录拥有ExecCGI的权限才行。但是要注意:不要让所有的目录均可以使用ExecCGI
  • Includes:让一些Server-Side Include程序可以运行。建议可以加上去
  • MultiViews:这个有点像是多国语言的支持,与语言数据有关。在错误信息的回报内容中最常见,在同一台主机中,可以依据客户端的语言而给予不同的语言显示。默认在回报信息中存在,你可以检查一下/var/www/error/目录下的数据。
  • AllowOverride None:允许覆盖参数功能,表示是否允许额外配置文件.htaccess的某些参数覆盖。我们可以在httpd.conf内设置好所有的权限,不过这样一来,若用户自己的个人网页想要修改权限时将会对管理员造成困扰。因此,Apache默认可以让用户以目录下的.htaccess文件内覆盖<Direcoty>内的某些功能参数。这个项目则是在规定.htaccess可以覆盖的权限类型有哪些。常见的有以下几种:
  1. ALL:全部的权限均可以覆盖
  2. AuthConfig:仅有网页认证(帐号与密码)可以覆盖
  3. Indexes:仅允许Indexes方面的覆盖
  4. Limits:允许用户利用Allow、Deny与Order管理可浏览的权限
  5. None:不可覆盖,也就是让.htaccess文件失效
使用.htaccess会严重影响到Apache的性能,如果不是特殊需要,建议关闭
Apache配置文件权限操作
Apache内部的Order可以处理相关权限的限制,其中有两个值,Allow和Deny
Order deny,allow 可以理解为拒绝所有,开放特定
Order allow,deny 可以理解为开放所有,拒绝特定
当allow与deny中有重复的规则出现,则最后一条的配置起到了决定性的作用,比如
Order allow,deny //开放所有,拒绝特定
allow from all //定义了允许的规则,开放所有
deny 192.168.1.1 //定义了拒绝的规则,拒绝了一个IP,这个IP包含在第二行的all当中,所以它的权限就默认由最后一行配置决定,最后一行是deny,所以1.1被被拒之门外
</Directory>
DirectoryIndex  jfedu.php index.html index.html.var //网站默认的首页文件的名称,如果上面的文件全部存在的话,就会按照设置的顺序显示排在最前面的首页,这个与之前在Option中谈到的Indexes有关。
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files> //不让用户查看.htpasswd和.htaccess这两个文件
TypesConfig /etc/mime.types //用于设置保存有不同MIME(描述消息内容类型的因特网标准)类型数据的文件名
DefaultType text/plain //默认的网页的类型
<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule> //指定判断文件真实MIME类型功能的模块
HostnameLookups Off //当打开此项功能时,在记录日志的时候同时记录主机名,这需要服务器来反向解析域名,增加了服务器的负载,通常不建议开启
#EnableMMAP off //是否允许内存映射:如果httpd在传送过程中需要读取一个文件的内容,它是否可以使用内存映射。如果为on表示如果操作系统支持的话,将使用内存映射。在一些多核处理器的系统上,这可能会降低性能,如果在挂载了NFS的DocumentRoot上如果开启此项功能,可能造成因为分段而造成httpd崩溃
#EnableSendfile off //这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件
ErrorLog logs/error_log //错误日志存放的位置
LogLevel warn //Apache日志的级别
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 logs/access_log common
CustomLog logs/access_log combined //说明日志记录的位置,这里面使用了相对路径,所以ServerRoot需要指出,日志位置就存放在/etc/httpd/logs
ServerSignature On //定义当客户请求的网页不存在,或者错误的时候是否提示apache的版本的一些信息
Alias /icons/ "/var/www/icons/" //定义一些不在DocumentRoot下的文件,而可以将其映射到网页根目录中,这也是访问其他目录的一种方法,但在声明的时候切记目录后面加”/”
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule> //对mod_dav_fs.c模块儿的管理
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" //对CGI模块儿的的别名,与Alias相似
# Redirect old-URI new-URL //Redirect参数是用来重写URL的,当浏览器访问服务器上的一个已经不存在的资源的时候,服务器返回给浏览器新的URL,告诉浏览器从该URL中获取资源。这主要用于原来存在于服务器上的文档改变位置之后,又需要能够使用老URL能访问到原网页
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
...
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
当一个HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件,如果目录中不存在索引文件,并且服务器有许可显示目录文件列表的时候,就会显示这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简单的列表,就需要前这些参数。如果使用了IndexOptionsFancyIndexing选项,可以让服务器针对不同的文件引用不同的图标。如果没有就使用DefaultIcon定义缺省图标。同样,使用AddDescription可以为不同类型的文档介入描述
AddLanguage ca .ca
......
AddLanguage zh-TW .zh-tw //添加语言
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW //Apache支持的语言
AddDefaultCharset UTF-8 //默认支持的语言
#AddType application/x-tar .tgz//支持的应用如果想支持对php的解析添加这样一行
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz //支持对以.Z和.gz.tgz结尾的文件
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz //添加对上述两种文件的应用
#AddHandler cgi-script .cgi //修改为:AddHandler cgi-script .cgi .pl 表示允许扩展名为.pl的CGI脚本运行
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml //添加动态处理类型为server-parsed由服务器预先分析网页内的标记,将标记改为正确的HTML标识
#ErrorDocument 404 /missing.html //当服务器出现404错误的时候,返回missing.html页
<Directory "/var/www/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory> //对/var/www/error网页的权限及操作
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
.....
设置特殊的参数,以保证对老版本浏览器的兼容,并支持新浏览器的特性
#NameVirtualHost *:80 //如果启用虚拟主机的话,必须将前面的注释去掉,而且,第二部分的内容都可以出现在每个虚拟主机部分。
#<VirtualHost *:80> //标签后面的IP定义一定要和上面NameVirtualHost定义的一致
# ServerAdmin webmaster@www.linuxidc.com //管理员的邮箱
# DocumentRoot /www/docs/www.linuxidc.com //虚拟主机的网页存放目录,必须,
# ServerName www.linuxidc.com //能被DNS或Hosts解析的完整域名,必须
# ServerAlias www.dummy-host.example.com //虚拟主机别名
# ErrorLog logs/www.linuxidc.com-error_log //错误日志
# CustomLog logs/www.linuxidc.com-access_log common //访问日志
#</VirtualHost>
在虚拟主机之上还能设置很多的功能,第二部分的内容都可以出现在每个虚拟主机部分,最精简的配置是需要有ServerName和DocumentRoot这两个配置,在添加了虚拟主机的配置之后需要把中心主机的信息也单独写成一个虚拟机的配置,(或者注销ServerName和DocumentRoot这两个配置),不然中心主机名的服务就不知道丢到哪里去了,这一步骤在Apache帮助文档中称做:取消中心主机
当然,如果你想有多个域名都指向到同一个虚拟主机是可以通过在<VirtualHost>块中配置ServerAlias功能来实现的。
  • DNS指向问题:如果你设置了别名,多个域名指向同一个虚拟主机,那么一定要保证DNS能正常解析的到
  • <VirtualHost>段配置指定作用域的问题:你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些<VirtualHost>段中以改变相应虚拟主机配置。主服务器(main server)范围内的配置指令(在所有<VirtualHost>配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用。
  • 虚拟主机名的问题:当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的<VirtualHost>段,并尝试找出一个与请求的主机名相同的ServerName或ServerAlias配置项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。
顺序展示:客户端发起一个访问域名的请求—>DNS解析到目标主机—>检查是否开启了虚拟主机的功能—>检查是否能和NameVirtualHost相匹配—>查找出每个与该IP对应的虚拟主机段配置—>尝试找出与请求的完整域名相同的ServerName或ServerAlias—>如果找到就使用这个虚拟主机的配置—>如果配置中与中心主机的配置不冲突则优先使用中心主机的配置,如果找不到与之相匹配的完整域名的虚拟主机配置—>使用符合这个IP地址的第一个虚拟主机
综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。当一个IP地址与NameVirtualHost指令中的配置相符的时候,主服务器中的DocumentRoot将永远不会被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到<VirtualHost>段中,并把它放到配置文件的最前面就可以了。
实例
NameVirtualHost *:80<VirtualHost *:80>ServerName www1.myweb.com
ServerAlias www2.myweb.comDocumentRoot /myseb/vhosts/www1
ErrorLog "logs/dummy-host.aaa.com-error.log"
<Directory "/myseb/vhosts/www1">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory></VirtualHost><VirtualHost *:80>ServerName www1.myweb2.comDocumentRoot /myweb/vhosts/www2</VirtualHost>

httpd2.2配置文件详解相关推荐

  1. mybatis mysql 配置文件_Mybatis配置文件详解(4)

    本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...

  2. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  3. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

  4. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  5. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

  6. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

  7. 【ZooKeeper】配置文件详解

    ZooKeeper的配置文件详解 zkServer.sh读取的默认配置文件是$ZOOKEEPER_HOME/conf/zoo.cfg.如果要用其它配置文件.如下传递配置文件参数: zkServer.s ...

  8. vsftpd配置文件详解

      1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用的登陆名为ftp或an ...

  9. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

最新文章

  1. C++ 之 string
  2. SQL Server中的char,nchar,varchar和nvarchar有什么区别?
  3. 数据结构 - 静态单链表的实行(C语言)
  4. 自制一个 elasticsearch-spring-boot-starter
  5. 轮胎扎了“钉子”该怎么办?到底要不要拔掉?
  6. Ascii排序(按字母从小到大排序),并以url地址传参方式拼接
  7. ASP.NET WebForm中使用WebApi
  8. 使用RedisTemplate实现Redis分布式锁出现的一些列问题(避坑)
  9. oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
  10. mysql多表结果合并查询
  11. pyboard :红外遥控模块,class UART
  12. 平面设计专业学什么?大学平面设计主修课程有哪些?
  13. 信息系统项目管理师计算题(进度管理总浮动时间、自由浮动时间、工期)
  14. Happiness is a Choise
  15. iPhone 和iPad的Icon大小和设置
  16. SLAM/VIO/VINS AR/VR
  17. A2dele: Adaptive and Attentive Depth Distiller for Efficient RGB-D Salient Object Detection
  18. C4D 21版 安装好一打开就闪退,查了好久
  19. python中一个星号(*)与两个星号(**)的作用
  20. Centos 6安装Maven

热门文章

  1. YV12 and NV12异同,
  2. 修改 input 框里的字体、颜色
  3. MySQL 5.6 for Windows 解压缩版配置安装
  4. BZOJ 3329: Xorequ(数位dp+递推)
  5. 记录腾讯云中矿机病毒处理过程(重装系统了fu*k)
  6. 自己写的几个常用到的函数
  7. linux命令学习-1-less
  8. 如何定义一个只能在堆上(栈上)生成对象的类?
  9. 五.几何对象和空间参考
  10. 信息采集-火车采集器