1. Apache配置系统

从整体来看apache的配置系统包括三个部分:

(1) 配置文件:比如 httpd.conf   .htaccess

(2) 配置指令:在配置文件 httpd.conf  .htaccess 里面的任意一行都是一个配置指令

(3) 配置信息的保存和读取:配置信息配置完成后会在Apache里面按照一定的数据结构进行保存,在Apache的运行过程中,任何需要配置信息的时候就去读取并执行。

2. Apache的配置文件

(1) httpd.conf:是Apache的主配置文件,通常位于$ServerRoot 目录下的conf目录中;httpd.conf文件修改后只有在httpd重启后才重新读取,所以修改httpd.conf必须要重启Apache才有效。

(2) .htaccess:http.conf 文件通常用于Apache 控制全局的配置信息,httpd.conf 提供了对某一个或多个目录控制,但是当目录增加到很多时,httpd.conf会急剧膨胀,也会吃不消的;所以,可用用.htaccess 文件对指定的目录进行命令控制。.htaccess 文件位于想要控制的目录中,可以对此目录以及所有子目录设置授权、目录索引(?)、过滤器及其他的控制命令。  注:可以用 AccessFileName 对 .htaccess 进行重新命名, AccessFileName .direaccess   ,但一般情况下不要修改。

(3) access.conf  srm.conf :在apache1.3 以前的版本存在这两个文件,在apache2.0以后就删了。

注:httpd.conf  access.conf srm.conf 是在Apache启动或重启时候就读取并执行里面的配置命令,但.htaccess 在apache运行过程中需要的时候才读取里面的配置命令。

3. Apache配置指令相关概念

(1) 指令概述

Apache的配置指令可以分为两类:简单指令和配置段指令

简单指令就是单行是一个指令:ServerLimit  200  表示Apache最大启动进程数量是 200

配置段指令:<...>  ......</...>

<Directory "/usr/local/test">
Options Indexs
......
......
</Directory>

这就是一个配置段命令,这里面的配置命令只对 /usr/local/test  有效。

(2) 指令参数

  • URL:http://www.example.com/path/to/file.html    http-->协议  www.example.com  是 hostname, path/to/file.html 请求文件网络路径
  • URL-path:URL中主机名之后的部分  /path/to/file.html 注:这个是表示请求资源在网络空间中的路径,映射到web服务器对应资源的物理路径
  • file-path:指文件在web服务器文件系统中的决定路径    /usr/local/apach/htdocs/path/to/file.html  ,如果不是以 / 开始,则ServerRoot为根目录
  • directory-path:木在文件系统中的决定路径
  • filename:文件名   file.html
  • extension:指 filename中最后一个 . 后面的部分  比如: file.html.en   则,html  en 都是 extension(后缀)
  • MIME-type:描述文件的类型    比如:text/html    img/jpeg 等

(3) 指令上下文:

配置文件中的各个配置指令具有不同的作用范围,根据作用范围不同可以分为 主配置、虚拟主机配置、局部配置和条件配置。

  • 主配置:httpd.conf (access.conf  srm.conf )中的非配置段指令
  • 虚拟主机指令:<VirtualHost>   ......</VirtualHost>  里面的配置指令集就是虚拟主机指令
  • 局部指令:局部指令可以分为两类,一种是配置段指令,一种是通过 .htaccess 配置的指令,指对某一个目录有效
  • 条件指令:在特定的条件下才会生效,比如:<IfDefine> ....</IfDefine>  等

注:常见的配置段指令是针对指定的文件系统和网络空间来设置指令的;文件系统:就是web服务器本机实实在在存在的物理路径 /usr/local/test ;而 网络空间是 client请求网页的  最后一部分内容    http://www.taobao.com/huodong/youhuai/test.html      中 /huodong/youhuai/test.html  只是一个路径,可能在 HTTP请求处理中对次路径进行 转换 或这 rewrite 操作转到别的url,所以并不一定映射到 文件系统对应的文档。

(4)文件系统容器

<Directory> <Files>  是对web服务器上特定的文件目录进行对应的设置

 <Directory /var/web/dir>
Options +Indexes
</Directory>

目录 /var/web/dir 及其子目录允许进行目录索引。

    <Directory /var/web/dir>
<Files private.html>
order allow,deny
Allow from IP1~IP2
Deny from all
</Files>
</Directory>

设置目录 /var/web/dir  以及子目录中的 private.html 文件的访问权限。

(5) 网络空间容器

<Location>  设置特定的网络空间

 <Location /private>
Order allow,deny
</Location>

对 网络空间中以 private 开头的URL进行设置访问权限

比如: http://www.example.com/private  http://www.example.com/private1123  http://www.example.com/private/test/file.html  这些网络空间设置访问权限

注:在设置存在的文件系统时候就用文件系统容器,如果设置不存在的文件目录就用网络空间容器(须有数据库生成的动态网页)

上面这些指令都有对应的适用范围(特定的目录),把这些设置指令使用范围的语句(指令)叫上下文  (配置段就是上下文的一种)

上下文,我们说了有5种: Directory   Files  Limit(allow、deny) Location   VirtualHost  .htaccess ,他们之间可以进行嵌套:

VirtualHost里面可以放 Driectory  Files Location  Limit   ;Directory  里面可以有 Files  Limit    Files 可以放Limit   .htaccess 可以放 Files  Limit  Locaton  里面什么也不能放

(5) 指令位置:一些指令只能出现在对应的上下文环境中,我们把控制指令能出现的位置叫指令位置控制,如果发现指令出现在不应该出现的位置,apache会报错。

普通文件的配置选项:

  • ACCESS_CONF:允许指令出现这Directiory Location 区间以内的顶级命令区,一般是用来设置特定文的指令控制
  • RSRC_CONF: 允许指令出现在 Directiory Location 区间以外的顶级命令区

Apache执行指令的过程:Apache会先读取对应的配置文件,把所有的配置指令读取到一个配置树,Apache才会遍历并处理所有的指令,然后一步一步的执行指令。

4. 目录级别位置选项

(1) .htaccess 文件指令的控制:对于任何一个文件系统 /var/web/dir   都可以用一个 .htaccess 文件来完成对这个文件目录及其子目录的设置,而且这个设置可以热启动,即:用修改后不用重新启动httpd 服务就能起作用,httpd服务会实时更新.htaccess 文件并执行新的指令;但是.htaccess 指令相当于 变相的修改 httpd.conf 主配置文件中的 <Directory /var/web/dir> 文件的设置,所以必须设置在 .htaccess文件可以修改的指令,控制其权限;这样就必须在httpd.conf 文件中对 特定的目录 (比如:/var/web/dir) 的.htaccess 进行指令权限设置,具体设置在 httpd.conf 中设置:

 <Directory  /var/web/dir>
AllowOverride None/ALL/ Indexs AuthConfig
Options ALL/Indexes FollowSymLinks
</Directory>

上面的  AllowOverride (允许修复改写权限设置),就是对 /var/web/dir 里面的.htaccess 文件能用的指令进行设置,AllowOverride 选项(参数)如下:

  • None:在.htaccess 文件中不能使用任何指令来修复 httpd.conf 中的配置文件,就是通过.htaccess 文件不能实现当前目录的设置修改(.htaccess 完全失效)
  • ALL:.htaccess 文件中所有的指令都可以修复 httpd.conf 文件,实现对当前目录的设置
  • AuthConfig:允许在 .htaccess 文件中使用与认证授权相关的指令,可以实现对特定网页用户和密码的复写
  • Indexes:允许在 .htaccess 文件中使用控制目录索引的指令
  • Limit:允许在 .htaccess 文件中使用控制主机访问的指令(allow  deny order等)

(2) Options 是指定在特定的目录 /var/web/dir 将使用服务器的相关特性,就是这个目录/var/web/dir内能进行的操作,就是对此目录进行权限设置

Options选项如下:

  • ALL:出 多重视图(MultiViews之外的所有特性)
  • ExecCGI:允许使用 mod_cgi 执行CGI脚本
  • FollowSymLinks:允许使用符号链接
  • Includes:允许使用 mod_include 提供的 SSI (Server-Side Include) 功能,发送给服务器的一些指示
  • IncludesNOEXEC  (???)
  • Indexes:如果clietn请求一个首页,但是在指定的目录 /var/web/dir 中没有这个首页,就会在client线上一个文件列表,类似:ftp站点的文件列表

注:Options 还有 + — ,具体的含义就是要对当前目录的特性进行新增和删除

 <Directory /var/web/dir>
Options +Indexes -FollowSymLinks
</Directory>

这样就是对 /var/web/dir 新增 Indexes特性,删除 FollowSymLinks 特性。

For example:借助.htaccess 实现对指定网页进行密码访问

 <Directory /var/www/html/protect>
AllowOverride AuthConfig
Options Indexes
</Directory>

b) 在 /var/www/html/protect 目录中新建 .htaccess 文件并进行网页访问权限设置

cd  /var/www/html/protect

vi .htaccess

<Directory>
AuthName "Protect webpage by .htaccess"
Authtype Basic
AuthUserFile /var/www/apache.passwd
require user shuming
</Directory>

AuthName:在出现输入帐号与密码的对话框中,线上此提示字符: Protect  webpage by .htaccess

Authtype:认证的类型,basic是指 Apache默认的类型

AuthUserFile:保护目录所使用的帐号密码的设置文件,就是当我们输入帐号和密码时通过此文件里面的帐号和密码进行验证

require :指定可以访问网页的帐号  shuming   test  test1 .....

c) 建立 .htaccess 里面需要的密码文件并设置能访问此网页的 帐号和密码:

直接用指令来完成:

htpasswd -c  /var/www/html/apache.passwd  shuming

New password: 111111

Re-type new password:111111

然后查看文件:

cat  /var/www/html/apache.passwd    ------>  shuming:Fiquw/....is4 ;在 设置密码时候会自动对密码进行加密

apache 配置文件管理的更多相关文章

  1. Linux安装LAMP开发环境及配置文件管理

    Linux主要分为两大系发行版,分别是RedHat和Debian,lamp环境的安装和配置也会有所不同,所以分别以CentOS 7.1和Ubuntu 14.04做为主机(L) Linux下安装软件,最 ...

  2. 死磕salt系列-salt 配置文件管理

    SLS是Salt State系统的核心,用来描述系统的目标状态,使用YAML语言书写.被用作配置文件管理. SLS文件 sls配置文件分为两种类型 top.sls 这是所有配置文件的入口 sls 这是 ...

  3. Haproxy安装部署文档及多配置文件管理方案

    一.部署安装 二.软件配置 三.系统服务 四.日志配置 五.小结 文章目录 最近我在负责一个统一接入层的建设项目,涉及到 Haproxy 和 ospf 的运维部署,本文分享一下我在部署 Haproxy ...

  4. apache配置 php中没有php5apache2_4.dll

    apache配置 php中没有php5apache2_4.dll 今天,在win7系统下安装Apache+PHP+MySQL时,终于体会到了版本多也不一定是好事,各种不兼容,主要是因为动态包的多少问题 ...

  5. Apache 配置多站点访问「为项目分配二级域名」

    一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...

  6. 【转】Apache 配置虚拟主机三种方式

    Apache 配置虚拟主机三种方式  原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...

  7. Tomcat:利用Apache配置反向代理、负载均衡

    本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...

  8. Apache 配置多端口

    Apache 配置多端口,主要是以下步骤 1. 如果电脑是64位的,官网上下载WampServe,装的过程中如果出现msvcp110.dll丢失的话,解决办法如下: 1.1 首先是打开浏览器,在浏览器 ...

  9. Python-day3作业-haproxy配置文件管理脚本

    #!/usr/bin/env python import os,sys,time,re,prettytable,json from collections import defaultdict,Ord ...

随机推荐

  1. [LeetCode][Python]Largest Number

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/largest ...

  2. 调试qemu

    最近需要给libvirt增加一个新feature,该feature基于qemu的最新代码. 我需要关心的: http://wiki.qemu.org/Features/Migration 需要自己编译 ...

  3. spoj 7258 Lexicographical Substring Search (后缀自动机)

    spoj 7258 Lexicographical Substring Search (后缀自动机) 题意:给出一个字符串,长度为90000.询问q次,每次回答一个k,求字典序第k小的子串. 解题思路 ...

  4. 7.15 css与js 选择奇偶子元素的区别

    js: 选取偶数位置的 <tr> 元素 $("tr:even") 选取奇数位置的 <tr> 元素 $("tr:odd") css 选取偶 ...

  5. MongoDB 启动异常

    今天启动MongoDB遇到异常状况 mongodb warning: 32-bit servers don't have journaling enable 解决方法: 删除数据库目录的.lock文件 ...

  6. java中关于SSL/TSL的介绍和如何实现SSL Socket双向认证

    一.        SSL概述 SSL协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传 ...

  7. T4模板之基础篇

    一.回顾 上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件.在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识.现在就带着之前的那些问题,正式的迈入对“T ...

  8. Hash表的使用

    Hash表能够实现在O(1)时间内对数据访问,虽然空间复杂度很高,但是时间复杂度很好.所以下面说一些使用Hash的算法. 第一个只出现一次的字符 利用Hash可以实现统计字符的个数,然后在遍历一次得到 ...

  9. Labview学习之波形图表的历史数据

    Labview学习之波形图表的历史数据 默认的情况下,波形图表显示100个点, 因为波形图表默认的缓冲区大小为1024,在默认的情况下如果修改图形图标属性中的标尺项,选中自动调整标尺,如图:2011- ...

  10. 解决open-vm-tools安装时Failed to get unit file state for run-vmblockx2dfuse.mount

    不知道什么原因,在kali rolling安装open-vm-tools时报以下错误: Failed to get unit file state for run-vmblockx2dfuse.mou ...