oiuy 发表于 2014-5-28 08:47:38

apache配置文件详解

apache配置文件分为三部分,分别是全局配置,中心主机配置和虚拟主机配置。
1.全局配置ServerTokens OS 是否显示操作系统的信息配置格式有如下几种方式:ServerRoot 服务器起点的安装目录
PidFile PID的文件,这是相对路径,并链接到/var/run目录Timeout 120 TCP的超时时间,发送的数据包如果没有响应,到了设置时间后就自动断开 TCP的机制KeepAlive 保持连接MaxKeepAliveRequests 100 最多请求的数据包数KeepAliveTimeout 15保持的超时时间下面是设置Apache的两种工作模式,分别是prefork和worker。我们先来了解一下这两种工作模式。prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。它适合于没有线程安全    库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的MPM,这样若一个请求出现问题就不会影响到其他请求。worker全新的支持多线程和多进程混合模型的MPM。由于 使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。<IfModule prefork.c>StartServers       8            启动服务的时候启动几个空闲进程等待用户访问MinSpareServers    5          最少空闲进程MaxSpareServers   20      最大空闲进程ServerLimit      256         定义客户端数的超出上限MaxClients       256         最大客户端(进程)数(一个客户端可发多个请求)MaxRequestsPerChild4000   定义一个进程最多可以响应多少个请求</IfModule> <IfModule worker.c>StartServers         2       启动服务的时候启动几个空闲进程等待用户访问MaxClients         150       最大客户端数MinSpareThreads   25       最少空闲线程MaxSpareThreads   75       最大空闲线程ThreadsPerChild   25       每个进程最多可以生产的线程数量MaxRequestsPerChild0       每个子进程可以响应多少个请求 0表示不作限制</IfModule>
Listen 80 监听的端口,nginx可以监听多个端口,也可以监听某个特定IP的端口。(Listen 8080)(Listent 192.168.1.2:80)[注]设置端口后要重启httpd服务才生效。
LoadModule                  指明加载某些模块Include conf.d/*.conf   被识别为配置文件的一部分ExtendedStatus On      当使用stubstatus查看时显示更为完整的状态信息User apacheGroup apache               指定运行这个服务的用户和组2.中心主机配置
ServerAdmin root@localhost 服务器不响应或者报错时候显示的管理员的邮箱地址
ServerName www.example.com:80 自动探测本机的正向和反向地址
UseCanonicalName Off 是否使用正式名称
DocumentRoot "/var/www/html" 指定网页文件的存放位置[注]中心主机和虚拟主机不能同时使用,当使用虚拟主机时,要把中心主机的DocumentRoot注释掉。
<Directory /> 定义一个目录的访问属性
   Options FollowSymLinks
   AllowOverride None
</Directory>
options参数:Indexes:允许索引访问网站没有主页面的时候直接列出网站目录下的所有内容                FollowSymLinks:跟踪链接允许访问符号链接所指向的实际文件
Includes:允许执行服务器包含的这样方式的调用
SymLinksifOwnerMatch:允许使用符号链接,如果属主匹配的话,先做用户匹配
ExecCGI:允许执行CGI
MultiViews:多用户的试图服务器和客户端的内容协商



Order allow,deny 访问目录的访问控制列表
Allow from all
在这里,oreder表示顺序,后者是默认规则,这是基于客户端来源的ACL。
例:允许192.168网段的IP地址进行访问,但不允许192.168.0.1的IP进行访问。
Order allow,deny
Deny from 192.168.0.1
Allow from 192.168.0.0/24


AllowOverride 是否允许覆盖当用户访问这个目录中的文件的访问控制列表,后面的是默认规则
规则:None 全部不允许
      All全部可以覆盖
      FileInfo
            AuthConfig 以指定的认证方式为准
            Limit
例:只能允许有权限的用户进行访问。我们先创建一个文件.htpasswd,该文件中写着用户名和密码。
创建.htpasswd文件命令
htpasswd -c 只在第一次用,创建密码文件的指令(如果文件创建以后还使用-c参数,原文件将被覆盖)
      -m 密码用md5加密后使用
      -D 删除用户
我们先在该文件中添加gentoo用户,再添加centos用户。
htpasswd -cm/etc/httpd/conf/.htpasswd gentoo(输入命令后会提示输入密码)
htpasswd-m/etc/httpd/conf/.htpasswd centos
创建好密码文件后,我们来设置AllowOverrideAllowOverride AuthConfig认证配置
AuthName "private" 认证名称(名称可以随便填写)
AuthType Basic    认证类型
AuthUserFile /etc/httpd/conf/.htpasswd 虚拟账号,访问apache才用到的,这是用户的认证文件
AuthgroupFile /etc/httpd/conf/.htgroup 组的账号文件
Require user gentoo 只允许gentoo用户访问
Require valid-user 允许所有密码文件中的用户访问
#Require group developers 只允许这个组的用户登录
[注]这是还可以设置某个组中的用户进行访问,但需要注意的是,在设置组时,需要同时创建htpasswd和htgroup。htgroup文件中包含组中的用户,htpasswd文件中包含组中那些用户的用户名和密码。
htgroup文件的创建及其格式
vim /etc/httpd/conf/.htgroup
development: gentoo ubuntu
格式为:组名:用户 用户 ...


<IfModule mod_userdir.c>操作系统用户拥有自己的网站
Jerry: http://172.16.25.1/~jerry
</IfModule>
在家目录下创建publick_html目录,在此目录下创建网页文件。
这样不用操作系统用户可以访问不同的页面。
使用这项功能时,需注释掉UserDir disable,启用UserDir public_html。
同时要让Apache对该用户的家目录有执行权限,例chown o+x /home/jerry

DirectoryIndex index.html index.html.var 网站的默认主页



AccessFileName .htaccess 为每一个目录创建访问控制权限

控制哪个文件,就在该文件所在的那个目录下建立.htaccess文件,实现对特定目录的访问控制
<Direcotry "/www/html/bbs">定义在主配置文件中
       optionsnone
       Allowoverrideauthconfig
       AuthName
       AuthType
       AuthUserFile
       Requireuser
</Directory>

TypesConfig /etc/mime.types 定义当前系统所支持的mime的类型


DefaultType text/plain 默认的类型

<IfModule mod_mime_magic.c> 判断某个模块是否存在
#MIMEMagicFile /usr/share/magic.mime
   MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off 是否对某个主机的主机名做析 一般不用

EnableMMAP off
EnableSendfileoff
ErrorLog logs/error_log 错误日志相对于serverroot而言



LogLevel warn 错误日志的日志级别
级别:
Debug 调试级别日志信息详细
Info
Notice 引起注意
warn   警告
Crit   蓝色预警
Alert黄色预警
Emerg红色警戒



日志格式:
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
%h 远端主机的IP地址%l 远程用户的登录名称 %u用户名 %t访问时间 %r 请求数据包首部的第一行%>s状态码 %b 响应信息的大小(字节)\"%{Referer}i\" 引用从哪跳转至当面页面 \"%{User-Agent}i\用户代理(浏览器,从哪发起的浏览请求,搜索引擎的网络爬虫)

CustomLog logs/access_log combined 访问日志


ServerSignature On 服务器签署,页面的底部信息



Alias /icons/"/var/www/icons/"路径别名,实现不在网页指定路径下的页面的访问
ScriptAlias /cgi-bin/"/var/www/cgi-bin/" 哪个路径下可放置CGI脚本

IndexOptions FancyIndexing VersionSort NameWidth=*HTMLTable 索引的选项



AddIconByType添加图标


AddDefaultCharset UTF-8默认使用的字符集

AddType application/x-compress .Z 添加额外的mime类型
AddType application/x-gzip .gz .tgz
BrowserMatch 匹配浏览器类型
DirectoryIndex index.html index.html.var指定主页

3.虚拟主机
一个物理主机可以运行N个站点,将其实现需设置虚拟主机。值得注意的是,虚拟主机和中心主机不能同时使用。
虚拟主机可通过IP,Port和FQDN进行设置。

IP
<VirtualHost 172.16.100.1:80>
   ServerName www.magedu.com
DocumentRoot "/vhosts/magedu.com" 网页路径 </VirtualHost>
<VirtualHost 172.16.100.2:80>   ServerName www.linux.orgDocumentRoot "/vhosts/linux.org" </VirtualHost>
Port
<VirtualHost 172.16.100.1:80>   ServerName www.magedu.comDocumentRoot "/vhosts/magedu.com" 网页路径 </VirtualHost><VirtualHost 172.16.100.1:8080>   ServerName www.linux.orgDocumentRoot "/vhosts/linux.org" </VirtualHost>
FQDN
NameVirtualHost 172.168.100.1:80
<VirtualHost 172.16.100.1:80>   ServerName www.magedu.comDocumentRoot "/vhosts/magedu.com" 网页路径 </VirtualHost><VirtualHost 172.16.100.1:80>   ServerName www.linux.orgDocumentRoot "/vhosts/linux.org" </VirtualHost>

页: [1]
查看完整版本: apache配置文件详解