第十五节、apache虚拟主机配置参数、常用文件及工作模式说明及rewrite规则

一、虚拟主机配置文件参数

以企业实际生产环境为例,以下是一台虚拟主机配置代码


    ServerAdmin [email protected]  
    DocumentRoot "/data/webapps/www1" #设置发布目录
    ServerName www.wugk1.com   #设置域名
    #对发布目录设置权限
    AllowOverride All      #具有 “.htaccess” 作用域将生效.加载这些文件,里面设置一些规则如跳转等
    Options -Indexes FollowSymLinks  #禁止显示目录结构,必须以html方式解析
    Order allow,deny  # 默认情况下禁止所有客户机访问
    Allow from all #允许所有客户机访问
  
    ErrorLog  logs/error_log
    CustomLog logs/access_log common
 
参数详解

使用设置指定目录的访问权限,其中可包含:

  • Options
  • AllowOverride
  • Order
  • Allow
  • Deny
    如上五个属性,在后面可以跟如下参数设置:
  1. AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。指令设置为 All 时,所有具有 “.htaccess” 作用域将生效.
  2. Options -Indexes FollowSymLinks禁止显示目录,如果要以目录显示需要改成Options Indexes FollowSymLinks,一般作为资源下载站会以目录结构显示.一般网站禁止浏览防止代码被下载.
  3. Order allow,deny ,默认情况下禁止所有客户机访问;Order deny,allow 默认情况下允许所有客户机访问.
  4. Allow from all允许所有客户机访问
二、apache常用文件说明(以yum安装为例,源码安装则在对应的安装目录下)
  1. /etc/httpd/conf/httpd.conf (Apache的主配文件)
    httpd.conf是Apache的主配文件,整个Apache也不过就是这个配置文件,里面几乎包含了所有的配置。有的distribution都将这个文件拆分成数个小文件分别管理不同的参数。但是主要配置文件还是以这个文件为主。只要找到这个文件名就知道如何设置了。后面会详细解释Apache主配文件的每一行配置
  2. /etc/httpd/conf.d/*.conf(include文件,引用文件)
    如果你不想要修改原始配置文件httpd.conf的话,那么可以将你自己的额外参数文件独立出来,注意以.conf结尾放在/etc/httpd/conf.d/目录下。重启Apache的时候,这个配置文件就会被读入主配文件之中了。他的好处就是当你在进行系统升级的时候,几乎不需要改动原本的配置文件,只要将你自己的额外参数文件复制到正确的地点即可,维护起来非常方便。
  3. /usr/lib64/httpd/modules/
    /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工作模式

一般来说常用的apache服务器有两种工作模式preforkworker两种,源码包预编译的时候参数--with-mpm=MPM就是选择安装引擎的工作模式MPM={beos|event|worker|prefork|mpmt_os2|winnt}

  • prefork的工作原理(默认模式)
    如果不用参数--with-mpm显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式也是Apache1.3中采用的模式.prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一.
    也就是apache启动时会产生主进程master,由主进程再预先派生一些子进程来接收处理客户端的请求,每个子进程有一个独立的线程,每个子进程能处理一个请求,相互之间也是独立的,好处是这是最稳定的工作模式.
    缺点是很占用内存,无法为大数量级的客户端提供服务,不适用于高并发的网站.
  • worker的工作原理
    worker是2.0版中全新的支持多线程和多进程混合模型的MPM.由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器.但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性.这种MPM的工作方式将是Apache2.0的发展趋势.
    worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求.同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数.如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程.
    Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients.如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程.默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)
    Worker模式:Worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。
    Worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的".
  • 查看安装apache服务器支持的模块
    [root@mini bin]# /usr/local/apache2/bin/httpd -l,列表中的prefork.c模块就代表的是prefork模式
两种工作模式配置文件,/usr/local/apache2/conf/extra/httpd-mpm.conf
[root@mini extra]# vim /usr/local/apache2/conf/extra/httpd-mpm.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

    StartServers               8  #初始化启动工作子进程,主进程master只有1个,开启服务时生成
    ServerLimit             1000 #服务器最大并发数量,一般和 MaxClients保持一直,否则会报警,默认是256
    MinSpareServers       25 #预留最小空闲进程
    MaxSpareServers      75 #预留最大空闲进程
    MaxClients              1000 #客户端最大连接数
    MaxRequestsPerChild   100000 #每个子进程最大处理请求数之和,0表示无限制是一直存在,否则达到数量后杀掉重新生成


# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves

    StartServers                  2  #初始化启动工作子进程
    MaxClients                   4000 #客户端连接数,每秒最大的并发数
    MinSpareThrea ds        25 #预留最小空闲线程
    MaxSpareThreads        75 #预留最大空闲线程
    ThreadsPerChild           500 #每个子进程支持的线程数量
    MaxRequestsPerChild    10000  #每个线程处理连接总数,之后杀掉重新生成

四、ReWrite规则

即网页重定向功能,实现的是URL的跳转,有两种配置方式,一种是基于服务器级别的即修改主配置文件httpd.conf,一种书目录级的即通过加载(.htaccess)文件.
实现rewrite功能需要在安装预编译的时候就增加参数--enable-rewrite来为服务器增加特定的功能模块.
修改配置文件httpd.conf,增加配置语句

RewriteEngine on  #启用rewrite引擎
RewriteCond %{HTTP_HOST} ^wugk1.com [NC]   //匹配以wugk1.com开头的域名,NC忽略大小写。
RewriteRule ^/(.*)$  http://www.wugk1.com/$1  [L]
//匹配上面条件,然后跳转到http://www.wugk1.com 
1)R 强制外部重定向。
2)F 禁用URL,返回403HTTP状态码。 
3)G 强制URL为GONE,返回410HTTP状态码。 
4)P 强制使用代理转发。 
5)L 表明当前规则是最后一条规则,停止分析以后规则的重写。 
6)N 重新从第一条规则开始运行重写过程。 
7)C 与下一条规则关联。

你可能感兴趣的:(第十五节、apache虚拟主机配置参数、常用文件及工作模式说明及rewrite规则)