apache 配置

转自:http://linuxnote.blog.51cto.com/9876511/1626161

Apache配置目录解释

wKioL1UXonfzGKM6AAEE75ipDpo889.jpg

bin:

是Apache执行文件所在的目录。例如,Apache的主要执行文件apachectl,使用这个命令可以用来控制Apache服务器开启或停止。还有Apache的密码保护文件htpasswd,当用户在某些网页需要输入账号与密码时,Apache本身提供一个最基本的密码保护方式,该密码的产生就是透过这个指令来完成的。

cgi-bin:

预设给一些可执行的CGI网页程序存放的目录,当用户输入http://localhost/cgi-bin/时所显示的数据所存储的目录。

error:

默认错误应答文件目录。如果因为服务器设置或者浏览器要求的数据错误时,在浏览器上出现的错误信息存放的位置。

icons:

这个目录提供Apache预设给予的一些小图示。

lib:

目录中保存了Apache服务器运行所需的库文件。

man:

Apache服务器配置文件的帮助手册所在目录。

modules:

Apache服务器所支持的动态加载模块所在的位置。

build:

目录是用于存放编译后的文件的。

conf:

Apache的配置文件的目录。

htdocs:

默认Web文档根目录,就是用户存放网页和存放默认首页的位置。用户通过浏览器中输入地址访问这个下面的文件,并将文件内容传回给用户浏览器,显示成美妙的页面供给用户浏览。

Logs:

Apache日志文件存放的位置。

1.access_log(访问日志):

记录了所有对Web服务器的访问活动,例如,记录了客户端的IP地址和在什么时间访问了哪个页面等信息。

2.error_log(错误日志文件):

记录了所有对Web服务器的错误访问活动。

manual:

目录中保存了Apache服务器的帮助手册文件,文件是网页格式的,可以通过访问Apache服务器中的/manual目录阅读该目录下的帮助文件内容。

在配置Apache的时候打开conf目录可以看到httpd.conf配置文件以及extra、original文件夹,大家会有疑问到底配置文件是哪个呢?original文件夹内也有个httpd.conf和extra文件夹。

用文件对比工具比较了两个httpd.conf发现内容一样,extra中的内容也一样,再仔细观察发现original目录中的内容其实就是conf目录中不含original文件夹的内容。

extra的意思是额外扩展,original的意思是源目录文件。

最后总结:

original文件夹是配置文件的源文件备份,而真正要配置的是conf目录下的httpd.conf文件以及extra目录的额外扩展配置。

wKioL1UXo1eiwwvuAAOelnbSx7E527.jpg

Apache服务器配置库文件目录

wKiom1UXojLA7-LYAAR5cil_zmE357.jpg

/usr/local/apache2/conf/httpd.conf Apache主配置文件

/usr/local/apache2/conf/extra/                       扩展及模块配置文件目录

 

httpd-autoindex.conf               配置目录列表的辅配置文件

httpd-dav.conf                     配置DAV的辅配置文件

httpd-default.conf                 配置与Apache服务自身相关的辅配置文件

httpd-info.conf                    配置用于服务器信息和状态显示的辅配置文件

httpd-languages.conf               配置语言支持的辅配置文件

httpd-manual.conf                  配置提供Apache文档访问的辅配置文件

httpd-mpm.conf                     配置多路处理模块(MPM)的辅配置文件

httpd-multilang-errordoc.conf      配置多语言错误应答的辅配置文件

httpd-ssl.conf                     配置SSL模块的辅配置文件

httpd-userdir.conf                 配置用户主目录的辅配置文件

httpd-vhosts.conf                  配置虚拟主机的配置文件

httpd.conf主配置文件内参数详解:

ServerRoot"/usr/local/apache2"

服务器配置文件的目录,编译安装的时候—prefix指定的目录

Listen 80

服务所监听的端口,默认是80

User daemon

实际服务于请求的子进程运行时的用户

Group daemon

请求提供服务的Apache子进程运行时的用户组

ServerAdmin  you@example.com

设置在所有返回给客户端的错误信息中包含的管理员邮件地址

ServerName localhost:80

设置服务器用于辨识自己的主机名和端口号

DocumentRoot"/usr/local/apache2/htdocs"

设置Web文档根目录

<Directory />

    Options FollowSymLinks     //配置在特定目录中可以使用哪些特性

    AllowOverride None              //确定运行已存在于.htaccess文件中的指令类型

    Order deny,allow                     //设置访问控制顺序,这里参数表示先拒绝后允许

    Deny from all//拒绝所有IP或主机访问除了all外可以设置IP、网段、域名、通配符

</Directory>

对某个目录或子目录都有效。任何可以在”directory”作用域中使用的指令都可以使用。Directory-path可以是一个目录的完整路径,也可以说包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,”?”匹配单个字符,”*”匹配任何字符序列。也可以使用”[]”来确定字符范围。以上通配符都不能匹配”/”字符。以</Directory>指令结束。

<IfModuledir_module>

    DirectoryIndex index.html                    //Apahce自动运行index.html文档

</IfModule>

封装根据指定的模块是否启用而决定是否生效的指令。

语法:<IfModule [!]module-file|module-identifier> ...</IfModule>

module-file是指编译模块时的文件名,比如mod_rewrite.c 。

module-identifier是指模块的标识符,比如mod_rewrite 。

在<IfModule>配置段中的指令仅当测试结果为真的时候才进行处理,否则所有其间的指令都将被忽略。

DefaultType text/plain

设定默认MIME内容类型

ErrorLog"logs/error_log"

错误日志存放位置

CustomLog logs/access_logcombined

指定访问日志及使用的格式

</IfModule>

ScriptAlias /cgi-bin/"/usr/local/apache-2.2.6/cgi-bin/"

设定默认CGI脚本目录及别名

<IfModulecgid_module>

    Scriptsock logs/cgisock

在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀

</IfModule>

<Directory"/usr/local/apache-2.2.6/cgi-bin">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

设定默认CGI脚本目录的属性

DefaultType text/plain

设定默认MIME内容类型

<IfModulemime_module>

    TypesConfig conf/mime.types

指定MIME类型映射文件

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

增加.Z .tgz的类型映射

</IfModule>

EnableMMAP on

启用内存映射

EnableSendfile on

使用操作系统内核的sendfile支持来将文件发送到客户端

Includeconf/extra/httpd-mpm.conf

指定多路处理模块(MPM)配置文件并将其附加到主配置文件

Includeconf/extra/httpd-multilang-errordoc.conf

指定多语言错误应答配置文件并将其附加到主配置文件

Include conf/extra/httpd-autoindex.conf

指定目录列表配置文件并将其附加到主配置文件

Includeconf/extra/httpd-languages.conf

指定语言配置文件并将其附加到主配置文件

Includeconf/extra/httpd-userdir.conf

指定用户主目录配置文件并将其附加到主配置文件

#Includeconf/extra/httpd-info.conf

指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件

#Include conf/extra/httpd-manual.conf

指定提供Apache文档访问的配置文件并将其附加到配置文件

#Includeconf/extra/httpd-dav.conf

指定DAV配置文件并将其附加到主配置文件

Includeconf/extra/httpd-default.conf

指定与Apache服务自身相关的配置文件并将其附加到主配置文件

Includeconf/extra/httpd-deflate.conf

指定mod_deflate压缩模块配置文件并将其附加到主配置文件

Includeconf/extra/httpd-expires.conf

指定mod_expires模块配置文件并将其附加到主配置文件

#Includeconf/extra/httpd-vhosts.conf

指定虚拟主机配置文件并将其附加到主配置文件

Includeconf/extra/httpd-ssl.conf

指定SSL配置文件并将其附加到主配置文件

<IfModulessl_module>

SSLRandomSeed startupbuiltin

SSLRandomSeed connect builtin

</IfModule>

SSL默认配置

httpd-autoindex.conf              配置目录列表的辅配置文件

IndexOptions  FancyIndexing  HTMLTable VersionSort

与目录索引有关的设置项目

Alias /icons/"/usr/local/apache2/icons/"

使用别名“/icons/”来表示FancyIndexed目录列表,如果你不使用、 

AddIcon*

指令告诉服务器不同扩展名的图象文件如何显示,只适用于FancyIndexed指令 

DefaultIcon/icons/unknown.gif

为那些没有显式定义图标的文件提供处理 

ReadmeNameREADME.html

指定服务器默认查找的README文件的名字,并添加到目录列表中 

HeaderNameHEADER.html

指定目录列表前缀文件的文件名 

IndexIgnore.??* *~ *# HEADER* README* RCS CVS *,v *,t

指定目录索引忽略并且不包含在列表中的文件名集合,支持shell类型的通配符。 

httpd-dav.conf                    配置DAV的辅配置文件

DavLockDB"/usr/local/apache2/var/DavLock"

用户验证需要,不可缺少,且需要为运行apache的用户可执行权限。 

Alias /uploads"/usr/local/apache2/uploads"

设置一个别名(虚拟目录),当用户访问http://IP/uploads网址时,实际上是指向服务器的/usr/local/apache2/uploads 类似创建一个快捷方式

BrowserMatch *

设置浏览器匹配

httpd-default.conf                配置与Apache服务自身相关的辅配置文件

Timeout 300                              

超时时间为300秒,服务器在断定请求失败前等待的秒数

KeepAlive On                             

提供长效的HTTP会话,用以在同一个TCP连接中进行多次请求

MaxKeepAliveRequests 100

限制了当前启用Keepalive时每个连接允许的请求数量

KeepAliveTimeout 5              

Apache在关闭持久连接前等待下一个请求的秒数

UseCanonicalName Off                 

会将ServerName设置的域名用于所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT AccessFileName .htaccess URL重写、自定义错误页面、MIME类型配置以及访问权限控制等

ServerTokensFull

应答头是否包含关于服务器操作系统类型和编译进的模块的描述信息

ServerSignature On

用来配置服务器端生成文档的页脚(错误信息、mod_proxy的FTP目录列表、mod_info的输出)。使用该指令来启用这个页脚主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。

HostnameLookups Off

该选项指定是否记录与Apache服务器连接的客户端名称

httpd-info.conf                   配置用于服务器信息和状态显示的辅配置文件

<Location URL路径|URL>

 //选项权限等设置

</Location>

提供基于URL的访问控制,配置完全独立文件系统之外的操作,这样会导致服务器受攻击。它不能用于针对文件系统的访问控制,因为可能会有几个不同的URL指向文件系统中的同一个文件,所以这样的控制常常会被容易的绕过,一般拒绝多有客户访问。

httpd-languages.conf              配置语言支持的辅配置文件

AddLanguage *

为主机设置不同的语言       

LanguagePriority *

语言优先级

ForceLanguagePriority Prefer Fallback

首先取一个可用的语言类型,若找不到,则机器试图使用最接近的语言

AddCharset *

通常情况下使用文件扩展名来判断字符设置

httpd-manual.conf                 配置提供Apache文档访问的辅配置文件

在服务器上提供文件访问

httpd-mpm.conf                    配置多路处理模块(MPM) 的辅配置文件

<IfModule 模块>

    //参数,选项

</IfModule>

其中的指令只有当服务器中存在特定的模块时才有效,或是被静态地编译到了服务器,或是被动态地载进服务器。

httpd-multilang-errordoc.conf     配置多语言错误应答的辅配置文件

多语言错误文档设定

httpd-ssl.conf                    配置SSL模块的辅配置文件

Listen 443                                                                              

SSL监听端口

AddTypeapplication/x-x509-ca-cert .crt           

AddTypeapplication/x-pkcs7-crl    .crl                      

证书和CRLs的MIME类型设定

SSLPassPhraseDialog  builtin                                          

密码对话框:配置密码对话框的输入程序。筛选对话框程序必须在标准输出上提供密码短语。builtin是内建的终端对话框

SSLSessionCache       "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"

SSLSessionCacheTimeout  300

进程间的会话缓存:一是会话缓存机制,二是超时时间。

SSLMutex "file:/usr/local/apache2/logs/ssl_mutex"

配置内部进程同步所使用的SSL引擎互斥信号的路径

SSLEngine on

SSL Engine Switch:SSL是否启用

SSLCertificateFile"/usr/local/apache2/conf/server.crt"

在一个PEM编码的证书中指出SSL证书文件。如果证书被加密,那么需要你需要被提示密码短语。注意杀掉-HUP后将再次提示。记得如果同时用RSA和DSA证书,你要在并行配置两个(也允许使用DSA密码等)

SSLCertificateKeyFile"/usr/local/apache2/conf/server.key"

服务器私钥。如果key不能和证书结合,使用下面指令指定一个key文件。记得如果同时用RSA和DSA证书,你要在并行配置两个(也允许使用DSA密码等)

httpd-userdir.conf                配置用户主目录的辅配置文件

UserDir public_html

用户主目录设置:目录名是当一个请求到达时追加到用户的家目录。注意你必须为这些目录设置默认的访问控制

httpd-vhosts.conf                 配置虚拟主机的配置文件  

如果要保留多个域名/主机在你的服务器上,你可以为它们设置虚拟主机。大部分的配置使用基于域名的虚拟主机,所以不需要担心IP地址问题,这一点可以在下面通过星号来表示。

提供了虚拟主机实例

Apache中prefork和worker两种工作模式的区别

worker模块占用的内存较小,对于流量大的网站来说,是一个比较好的选择。

prefork虽然占用比较大的内存,不过速度和worker差异并不大,而且prefork

内存使用设计较为优秀,可以在很多无法提供debug的平台上面进行自我排错,

所以默认的模块就是用的prefork这个。

简单的说,worker是基于线程的工作模式,prefork是基于进程的工作模式

worker会派生出一些进程,每个进程下启动多个线程来提供服务,

worker的进程不会提供服务,他是专门用来管理进程的,网络上有的文档中说到

基于worker模式下的Apache如果某一个进程下的某一个线程崩溃,那么这个进程

下面所有的线程将全部崩溃掉,然后由管理进程来重启线程。工作在worker模式下的

Apache可以大大的提高并发能力。但是线程安全性较差,如果使用worker模式的Apache

不如选择使用同样工作在线程下的Nginx来替代。

prefork并不支持很大的并发处理能力

配置虚拟主机注意事项:

注意1:

NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。

注意2:

所有符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而<VirtualHost>标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。所以每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。注意3:

如果设置NameVirtualHost 或<VirtualHost>为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。

DocumentRoot 网站目录(注意:如果网站目录中的路径有空格,请在路径两端加上双引号)ServerName 要绑定的域名(必填)

ServerAlias 要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)支持*,?两种通配符,比如*.abc.com,表示任意一个abc.com的二级域名都可访问。CustomLog 用户日志文件(可选,如果不需要,则去掉该行)ErrorLog 错误日志(可选,如果不需要,则去掉该行)

注意4

虚拟主机中一定要添加

<Directory 目录>

    Order allow,deny
    Allow from all

</Directory>

因为默认是拒绝所有,如不添加,客户端将无权限访问。

原文地址:https://www.cnblogs.com/lmaster/p/6823438.html