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 实现对指定网页进行密码访问

a) 在httpd.conf 中设置网页所在目录可以使用 .htaccess 设置权限  AuthConfig

<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 ;在 设置密码时候会自动对密码进行加密

借助这个例子可以重复理解,httpd.conf   .htaccess  直接的关系,以及对二者的应用。

Apache 配置文件管理相关推荐

  1. springCloud - 第8篇 - 配置文件管理中心 - 集群模式(负载匀衡)使用

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 当微服务系统中 应用服务有很多时(serviceA .serviceB ...),会都从同一个配置中 ...

  2. springCloud - 第7篇 - 配置文件管理中心 ( SpringCloud Config )

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.简介 分布式的系统往往有多个服务,会有不同的配置文件. 不同环境配置文件内容也各不相同: 开发环 ...

  3. windows下apache配置虚拟主机的两个方法

    windows下apache配置虚拟主机方法一: 对httpd.conf进行设置: 1.注释以下三行 #ServerAdmin #ServerName #DocumentRoot 2.去掉mod_pr ...

  4. 用友云微服务架构下配置文件管理利器:配置中心

    微服务架构是这几年IT领域的一个高频词汇,越来越多的项目和应用正在以微服务的思想进行重构.相比于单体应用和SOA架构,微服务优势也逐渐凸显,被广大架构师和技术人员引入和推崇.当然,单体应用.SOA.微 ...

  5. Apache配置--用户认证(针对目录访问)-update2015-05-02

    通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...

  6. CentOS 7配置LNMP开发环境及配置文件管理详解

    本篇文章主要介绍了CentOS 7配置LNMP开发环境及配置文件管理,详细的介绍了MySQL 5.6,PHP 5.6,Nginx的安装与配置,有兴趣的可以了解一下. 安装并配置MySQL 5.6 从C ...

  7. 【Linux】Centos7 下使用Apache 配置网站虚拟地址, 另附 laravel 虚拟地址配置

    最近使用laravel 搞项目,配置本地开发环境,很是头疼,不知道是什么情况,简单直白地总结一下,附上配置详情 电脑环境: Centos7 + lamp 你的电脑上有Apache Apache配置文件 ...

  8. 【CyberSecurityLearning 32】Apache配置、Apache的访问控制设定、LAMP平台的搭建

    目录 Apache配置 web服务 Apache 1.先启动httpd服务 2.通过端口来验证服务是否启动 3.建立主页 4.关于Apache服务软件的主配置文件分析 Apache的访问控制设定 1. ...

  9. Apache配置虚拟主机三大问题--自己的相关坑

    Apache配置虚拟主机三大问题 第一大问题:配置失败 主要是apache 2.4以后配置步骤不再像以前那样了,正确步骤如下: 第一步:在httpd.conf中开启虚拟主机配置功能 #Include ...

最新文章

  1. UVA 10214 Trees in a Wood
  2. (转载)(c#)数据结构与算法分析 --数组、向量和表
  3. 深入PHP内核之in_array
  4. java链表寻找中间节点
  5. php 请求拦截,解决拦截器对ajax请求的拦截实例详解
  6. 文件操作2-Day3
  7. yum 下载软件的存放位置
  8. windows XP下DCOM的权限配置
  9. c++基础day03
  10. jsp实现上一页下一页翻页功能
  11. 轻量级ORM框架 【Dapper】 的使用
  12. 幸运数字(洛谷-P3292)
  13. 网址收藏 2020.12.11
  14. 蓝桥杯51单片机之数码管从点亮到动态时钟的实现【单片机开发初学者必掌握】
  15. c+const_如何在C ++中使用const? 初学者指南
  16. STL 关联容器的lower_bound()和upper_bound()
  17. Idea导出项目jar包
  18. nod32 lic 99用户授权文件可以用到2015年4月的许可证下载
  19. 如何使用跳板机一键登录目标机器
  20. JAVA 编程:完全数的判断

热门文章

  1. C++类的虚函数表和虚函数在内存中的位置
  2. 【投屏】Scrcpy源码分析二(Client篇-连接阶段)
  3. comsol 4.4 matlab,Comsol with Matlab Quick Started (1)
  4. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法Windows版(手贱强制重启电脑的后果)
  5. 传奇修改ip和服务器,传奇私服服务器IPLocal插件的详细使用方法和技巧攻略
  6. Android 如何安装APK
  7. throw new JSONException(JSONObject[ + JSONUtils.quote(key) + ] is not a number.);
  8. Ubuntu设置IP地址、网关、DNS
  9. Python抓取网页并保存为PDF
  10. 【鸽子木 · 每日一题】比赛安排(3月28日)