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

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

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

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

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

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

# 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
<IfModule mpm_worker_module>
    StartServers                  2  #初始化启动工作子进程
    MaxClients                   4000 #客户端连接数,每秒最大的并发数
    MinSpareThrea ds        25 #预留最小空闲线程
    MaxSpareThreads        75 #预留最大空闲线程
    ThreadsPerChild           500 #每个子进程支持的线程数量
    MaxRequestsPerChild    10000  #每个线程处理连接总数,之后杀掉重新生成
</IfModule>
四、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 与下一条规则关联。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容