第章 APACHE 服务ppt课件_第1页
第章 APACHE 服务ppt课件_第2页
第章 APACHE 服务ppt课件_第3页
第章 APACHE 服务ppt课件_第4页
第章 APACHE 服务ppt课件_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第6章Apache服务 2 本章要点 Apache主配置文件httpd conf访问控制虚拟主机重定向重写规则 3 6 1Apache概述 Apache是一款著名的Web服务器软件 在Internet上 Apache是占有率最高的Web服务器 当前 Apache主要有两种流行的版本 第一种是1 3版 这是比较早期但十分成熟稳定的版本 目前使用率仍很高 第二种是2 0版 这是Apache最新的版本 增加和完善了一些功能 RHEL7 0中的Apache服务采用的是2 4 6版 4 6 1 1Apache的功能 下面列举出Apache的主要功能 1 支持HTTP1 1标准 2 支持多种脚本语言如 perl php jsp等 3 支持多种用户认证机制 如 htaccess文件 mysql数据库 openldap目录等 4 支持虚拟主机 5 支持访问控制 6 支持重定向和重写规则 7 支持SSL 5 6 1 2Apache的安装 在RHEL7 0中与Apache相关的有以下3个软件包 1 httpd 2 4 6 17 el7 x86 64 rpm这是Apache服务器的软件包 2 httpd manual 2 4 6 17 el7 noarch rpm这是Apache帮助手册的软件包 3 httpd tools 2 4 6 17 el7 x86 64 rpm这是Apache工具软件包 可通过 rpm ivhhttpd rpm或采用yum来进行安装 如下 yuminstallhttpdhttpd toolshttpd manual执行如下命令 来安装上述3个软件包 6 6 1 3Apache的运行 在RHEL4 0中 有两种典型启动Apache的方法 方法一 root server1 servicehttpdstart方法二 root server1 apachectlstart如果要设置每次开机时自动运行Apache服务器 可执行如下指令 root server1 chkconfighttpdon 7 通过如下命令来检查运行状态 root server1 servicehttpdstatus通过如下命令来检查语法 root server1 apachectlconfigtest或 root server1 httpd t通过如下命令来查看编译时的配置参数 root server1 httpd V通过如下命令来查看已经被编译到Apache中的模块 root server1 httpd l 8 6 2Apache的配置文件 6 2 1Apache配置文件的结构Apache的配置文件是 etc httpd conf httpd conf 1 Section1 GlobalEnvironment这段的功能是控制Apache服务器进程的全局操作 2 Section2 Main serverconfiguration这段的功能是处理任何不被段处理的请求 即提供默认处理 请注意 section2中指令都可以写在虚拟主机段中 3 Section3 VirtualHosts这段的功能是提供虚拟主机配置 9 6 2 2Apache配置指令 1 Section1 GlobalEnvironment段的配置指令 1 ServerRoot etc httpd 功能 设置服务器的根目录 说明 在Apache配置文件中如果文件名不以 开头 则认为是相对路径 会在文件名前加上ServerRoot命令指定的默认路径名 2 Listen80功能 设置Apache服务器监听的端口号为80 说明 也可以设置Apache服务器监听的IP地址和端口号 如Listen12 34 56 78 80 10 3 包含模块文件Includeconf modules d conf功能 将配置模块文件包含进来 这里的模块都是对动态共享对象支持 查看该目录下包含进来了哪些文件 llconf modules d 总用量44 rw r r 1rootroot37393月20201400 base conf rw r r 1rootroot1393月20201400 dav conf rw r r 1rootroot413月20201400 lua conf rw r r 1rootroot7423月20201400 mpm conf rw r r 1rootroot8943月20201400 proxy conf rw r r 1rootroot883月20201400 systemd conf rw r r 1rootroot4513月20201401 cgi conf rw r r 1rootroot531月27201410 auth kerb conf rw r r 1rootroot431月27201410 nss conf rw r r 1rootroot2163月7201410 php conf rw r r 1rootroot431月27201410 wsgi conf 11 4 自定义Apache子进程运行身份UserapacheGroupapache功能 设置Apache服务器子进程运行时的身份为apache 属组为apache 说明 将Apache服务器子进程的运行身份设置为权限很低的账号是当前安全措施中经常采用的方式 示例 psaux grephttpdroot342850 00 350163227432 Ss09 270 01 usr sbin httpd DFOREGROUNDroot342860 00 1507849724 S09 270 00 usr libexec nss pcache851973off etc httpd aliasapache371700 00 351806427248 S10 320 00 usr sbin httpd DFOREGROUNDapache371740 00 351806427248 S10 320 00 usr sbin httpd DFOREGROUNDapache371750 00 351806427248 S10 320 00 usr sbin httpd DFOREGROUNDapache371770 00 351806427248 S10 320 00 usr sbin httpd DFOREGROUNDapache371780 00 351806427248 S10 320 00 usr sbin httpd DFOREGROUND 12 2 Section2 Main serverconfiguration段 1 设置管理员邮箱ServerAdminroot localhost功能 设置Apache服务器管理员的邮箱 2 设置服务器名称和端口号 ServerName功能 设置Apache默认站点的名称和端口号 13 3 根目录的访问控制AllowOverridenoneRequirealldenied功能 在mainserver段中有很多个Directory指令配置段 它的写法有些类似HTML的格式 表示要对文件系统的目录进行限制 AllowOverrideNone表示不允许覆盖 即不允许其他文件 htaccess 中配置覆盖当前的设置 AllowOverride的值参见表6 1所示 14 15 5 对文档根父目录的访问控制AllowOverrideNone Allowopenaccess Requireallgranted功能 对文档根的父目录 var www 放松限制 不允许覆盖当前设置且开放无条件访问 这是Apache2 4版中默认配置文件中的新设置 由于权限比较宽松 因此需要注意安全问题 16 6 对文档根的访问控制功能 针对文档根目录 var 进行限制 OptionsIndexesFollowSymLinks功能 设置允许跟随符号连接 Indexes的含义是如果要访问的文档不存在 则会显示出该目录下的文件目录清单 AllowOverrideNone功能 不允许覆盖当前配置 即不处理 htaccess文件 Requireallgranted功能 允许从任意地址访问该目录 Options的值参见表6 2所示 17 表6 2Options选项值及其含义 18 7 设置默认文档名DirectoryIndexindex html功能 设置每个目录的默认文档名 说明 当访问网站时如果没有指定具体的文档 则会在指定的目录下找有没有默认文档存在 如果有则显示 8 文件访问控制Requirealldenied功能 无条件禁止访问文件名中包含 ht 的文件 19 9 设置错误日志ErrorLog logs error log 功能 指定错误日志的存放位置 10 设置日志级别LogLevelwarn功能 指定日志记录的级别 11 设置日志格式LogFormat h l u t r s b Referer i User Agent i combinedLogFormat h l u t r s b commonLogFormat h l u t r s b Referer i User Agent i I O combinedioCustomLog logs access log combined功能 利用LogFormat指令设置记录日志时采用的格式 利用CustomLog指令设置访问日志的位置和类型 20 12 设置CGI脚本目录的别名ScriptAlias cgi bin var 功能 定义CGI脚本目录的别名 即将 cgi bin 定义为 var 的别名 说明 一般情况下 cgi bin 中存放的是CGI脚本程序 而且脚本程序应该位于文档根目录之外 所以采用了别名 虚拟目录 的方式 接下来 仍然是对脚本别名所对应的真实目录做限制的配置段 内容如下 AllowOverrideNoneOptionsNoneRequireallgranted 21 13 设置MIME模块TypesConfig etc mime typesAddTypeapplication x compress ZAddTypeapplication x gzip gz tgz功能 如果前面的AddEncoding去掉注释的话 那么应该定义这些扩展名来指明这些媒体文件的类型 AddTypetext html shtmlAddOutputFilterINCLUDES shtml功能 定义SSI 服务器端包含 文件的扩展名 增加处理 shtml文件的方法 14 增加默认字符集AddDefaultCharsetUTF 8功能 增加默认字符集为UTF 8 22 15 MIMEMagic模块MIMEMagic功能 允许服务器根据文件内容的各种提示来决定其类型 16 采用sendfile系统调用来传递文件EnableSend功能 采用内存映射或sendfile系统调用来传递文件 这通常可以提高服务器的性能 但是在基于网络挂装的文件系统上 必须关闭此特性 17 包含可选的配置文件IncludeOptionalconf d conf功能 包含 etc httpd conf d目录下所有以 conf结尾的配置文件 这些可选的 小配置文件 是主配置文件的重要扩展和补充 23 6 3Apache的配置示例 6 3 1主机访问控制1 主机访问控制示例一 Orderallow denyAllowfrom192 168 10 0 24Denyfrom192 168 10 123功能 除了192 168 10 123以外 192 168 10 0 24网段的其他机器可以访问该目录 说明 Order定义了allow与deny指令的执行顺序 如果二者有矛盾的话 以后执行的指令为准 需要注意的是allow deny指令的执行顺序与下面的Allowfrom Denyfrom语句的书写顺序无关 24 主机访问控制示例三 Orderallow denyAllowfromallDenyfromall功能 禁止所有主机从任何地点访问该目录 Orderdeny allowAllowfrom192 168 10 123Denyfrom192 168 10 123功能 允许IP地址为192 168 10 123的主机可以访问该目录 25 关于主机访问控制有以下说明 1 Order命令中指定的顺序至关重要 写在后面的关键字有最终决定权 2 IP地址的表示方法比较灵活 可以有如下写法 网络 子网掩码 如192 168 10 0 255 255 255 0 CIDR规范 如192 168 10 0 24 单个IP地址的表示 192 168 10 123 3 支持域名例如 A功能 表示允许域中所有主机访问 26 6 3 2用户访问控制 下面通过示例来具体介绍认证授权的实现 1 首先 编辑Apache的主配置文件httpd conf 在需要进行认证授权的目录中进行配置 对目录 var 进行访问控制 AllowOverrideAuthConfig 表示允许覆盖 即允许在文件 htaccess中使用认证授权 说明 htaccess应该位于 var 目录中 另外 AllowOverride的值还可以是All 也能实现此功能 27 2 在需要认证和授权的目录中 即 var 目录中创建名为 htaccess的文件 其内容如下 AuthName TestArea AuthTypeBasicAuthUserFile var mypasswdRequirevalid user 28 3 创建口令文件 按照 htaccess中AuthUserFile指定的文件名 来创建口令文件 var mypasswd 执行如下命令 htpasswd c var mypasswdmyuser1功能 创建 var mypasswd文件 同时将用户myuser1加入该文件中 其中 c 表示创建 注意只在第一次创建口令文件使用 c 以后再添加新用户时不要带 c参数 请看如下示例 htpasswd var mypasswdmyuser2 29 4 将口令文件的属主改为apache chownapache apache var mypasswd说明 因为在运行Apache服务器时是以apache的身份运行的 而在进行认证过程时需要访问口令文件 var mypasswd 所以需要将口令文件的属主改为apache 30 执行了以上步骤后 即可重新启动Apache服务器 servicehttpdrestart在客户机上 进行认证授权的测试 在浏览器地址栏中输入如下内容 效果如图6 1所示 31 图6 1认证授权 32 图6 2未通过与通过认证授权 33 6 3 3虚拟主机 Apache实现的虚拟主机主要有3种类型 一是基于IP地址的虚拟主机 二是基于端口的虚拟主机 三是基于名字的虚拟主机 34 1 基于IP地址的虚拟主机 思路 在同一台主机上配置多个IP地址 每个IP地址对应一个虚拟主机 第一步 在一台主机上配置多个IP地址 执行如下命令 ifconfigeth0 110 22 1 103netmask255 255 255 0功能 eth0 1为eth0的子接口 该命令创建了子接口eth0 1 同时为该接口配置了IP地址10 22 1 103 35 第二步 编辑Apache的配置文件 在文件的末尾追加以下内容 ServerAdminwebmaster DocumentRoot ServerName10 22 1 102ErrorLoglogs 10 22 1 102 error logCustomLoglogs 10 22 1 102 access logcommonServerAdminwebmaster2 DocumentRoot ServerName10 22 1 103ErrorLoglogs 10 22 1 103 error logCustomLoglogs 10 22 1 103 access logcommon 36 第三步 建立两个虚拟主机的文档根目录及相应测试页面 mkdir p mkdir p vi 内容如下 thisistheIP basedVirtualHost10 22 1 102 vi 内容如下 thisistheIP basedVirtualHost10 22 1 103 37 第四步 运行与测试 servicehttpdrestart elinks说明 利用RHEL7 0中提供的文本浏览器elinks来测试 elinks 38 2 基于端口的虚拟主机 思路 在同一台主机上针对一个IP地址和不同的端口来建立虚拟主机 即每个端口对应一个虚拟主机 第一步 建立新的子接口并配置IP地址为10 22 1 104 ifconfigeth0 210 22 1 104netmask255 255 255 0 39 第二步 编辑Apache的主配置文件httpd conf 增加监听的端口号8001和8002在Section1中增加两行配置 分别监听8001和8002端口Listen80Listen8001Listen8002 40 第三步 编辑Apache的主配置文件httpd conf 建立基于端口的虚拟主机配置段 内容如下 ServerAdminwebmaster3 DocumentRoot ServerName10 22 1 104ErrorLoglogs 10 22 1 104 8001 error logCustomLoglogs 10 22 1 104 8001 access logcommonServerAdminwebmaster4 DocumentRoot ServerName10 22 1 104ErrorLoglogs 10 22 1 104 8002 error logCustomLoglogs 10 22 1 104 8002 access logcommon 41 3 基于名字的虚拟主机 思路 在同一台主机上针对相同的IP地址和端口号建立基于名字的虚拟主机 第一步 在DNS服务器的区域数据库文件中增加两条A记录和两条PTR记录 为了不影响前面的虚拟主机 这里再增加一个子接口 并配置为10 22 1 105 ifconfigeth0 310 22 1 105netmask255 255 255 0接下来 配置DNS以支持新的域名解析 DNS正向区域数据库中增加的记录如下 INA10 22 1 105 INA10 22 1 105 42 第二步 编辑Apache的主配置文件 激活基于名字的虚拟主机 并建立两个基于名字的虚拟主机配置段 NameVirtualHost10 22 1 105 80功能 针对10 22 1 105 80配置基于名字的虚拟主机 说明 这是非常重要的一条指令 正是该指令的作用才激活了基于名字的虚拟主机的功能 43 NameVirtualHost10 22 1 105 80ServerAdminwebmaster5 DocumentRoot ServerNameErrorLoglogs CustomLoglogs commonServerAdminwebmaster6 DocumentRoot ServerNameErrorLoglogs CustomLoglogs common 44 第三步 建立两个虚拟主机的文档根及主页 mkdir p mkdir p vi 内容如下 welcometoname basedVirtualHost vi 内容如下 welcometoname basedVirtualHost 45 第四步 运行与测试 servicehttpdrestart elinks elinks 46 6 4Apache的高级配置 6 4 1重定向Redirect指令的格式如下 Syntax Redirect status URL pathnew URL说明 new URL不能是相对路径 必须是FQDN 47 重定向示例一 编辑Apache的主配置文件httpd conf 在Section2mainserverconfiguration中增加如下指令 Redirect tools功能 当客户访问时 将被重定向为 48 重定向示例二 Redirectpermanent one功能 将 one重定向到 并告知客户机该资源永久改变 其返回的状态码为301 Redirect303 three功能 将 three重定向到 并告知客户机该资源已被替换 其返回的状态码为303 说明 Redirect指令优先于Alias和ScriptAlias配置指令 49 6 4 2重写规则 Apache的重写规则模块是一个基于正则表示式的重写URL的工具 重写规则模块提供了包括路径处理在内完整的URL处理操作 既可以应用在Apache主配置文件httpd conf中 又称为每服务器上下文per servercontext 又可以应用在 htaccess文件中 又称为每目录上下文per directorycontext 50 在进行URL的操作过程中 可以依据多种条件测试 例如 服务器变量 环境变量 HTTP首部各字段 时间戳等 51 重写规则的处理机制分为两部分 第一是整个规则集的处理流程 第二是一条规则的处理流程 52 1 整个规则集的处理流程注意 整个规则集的处理流程有些复杂 记住先从第一条规则入手 而不是写在第一条规则前面的重写条件 53 图中的RewriteRule指令用来设置一条重写规则 其格式如下 RewriteRulePatternSubstitution其中 Pattern是URL需要匹配的模版 是一个正则表达式 Substitution是重写后的字符串 即新的URL或新的文件名 图6 3中出现的另一条指令是RewriteCond 该指令用来设置重写条件 其格式如下 RewriteCondTestStringCondPattern其中 TestString可以包含变量 后向应用及映射查询结果等 CondPattern是条件模版 可以是一个正则表达式 将TestString与后面的CondPattern条件模版相比对 若二者相匹配 则执行下一个重写条件或执行与其相关的重写规则 54 当重写规则模块收到一个URL请求后 按如下流程处理 1 按顺序取出下一条要执行的重写规则 2 用当前的URL与当前重写规则中的Pattern进行比对 如果二者不匹配 则中止该规则的执行 转去执行步骤5 如果二者匹配 则执行步骤3 3 执行与该规则相关的重写条件中的TestString 即展开TestString 接着 将TestString与该重写条件中的CondPattern相比对 如果二者不匹配 则中止该重写条件的执行 进而中止该重写规则的执行 转去执行步骤5 如果二者匹配 则执行步骤4 4 执行该条重写规则中的Substitution 即真正实现URL重写操作 5 判断是否为最后一条重写规则 如果不是 则转去执行1 否则执行6 6 URL重写完毕 55 2 一条规则的处理流程 Apache重写模块中允许一条重写规则可以与任意数量的重写条件相关联 为解释每一条重写规则的执行过程 请参见图6 4所示 56 一条重写规则的执行过程 57 Apache重写模块中 允许重写规则可以没有相关的重写条件 在这种情况下 仍然先判断收到的URL与Pattern是否匹配 如果二者相匹配 则直接执行Substitution 即完成URL重写操作 如果一条重写规则与多条重写条件相关联 则在处理完URL与Pattern比对后 依次去执行各重写条件 如果其中有任何一条不满足的话 都会中止该重写规则的执行 58 3 重写规则示例 1 源与目标同在文档根下示例本示例是指在文档根 var 下有两个目录 一个是原来存放文档的旧目录 var 一个是现在存放文档的新目录 var 客户通过旧名字仍然可以访问原来的文档 即将重定向到 var 目录 具体实现步骤如下 59 1 在Apache主配置文件httpd conf中 输入以下内容 针对源 旧 目录进行设置OptionsFollowSymLinks 要用重写规则 必须激活FollowSymLinks选项AllowOverrideAll 允许覆盖 即采用 htaccess文件中的配置 下面在该文件中写入重写规则 针对目标 新 目录进行设置OptionsFollowSymLinksAllowOverrideNone 不允许覆盖 60 2 创建源 目录两个目录及测试文件 mkdir var old1 new1 vi var 内容如下 thisis var 61 3 在源 旧 目录中创建 htaccess文件 内容如下 RewriteEngineONRewriteBase realnew1 RewriteRule 1 R 301 说明 RewriteEngineON激活重写引擎 RewriteBase realnew1 是目录级重写指令 用来设置重写URL的基础目录 62 说明 续 RewriteRule 1 R 301 此指令有3部分参数 第1个参数Pattern的值为 这是一个正则表达式 其含义是任意字符开头或结尾的字符串 其中 用来定义后向引用 也称为组 第2个参数Subsititution的值是 1 用来引用前面Pattern中定义的第一对 中的内容 第3个参数的值是 R 301 R表示外部重定向 301表示永久移动 63 4 测试 在客户机上输入 参见图6 5所示 图6 5重写规则应用之重定向之前 64 按键后 出现如下内容 参见图6 6 图6 6重写规则应用之重定向效果 65 2 目标不在文档根下的示例 本示例的文档根仍为 var 源 旧 目录为 var 目标 新 目录是 var 很明显二者不在同一个文档根下 下面介绍具体实现步骤 66 1 编辑Apache主配置文件httpd conf 加入以下内容 针对源 旧 目录进行设置OptionsFollowSymLinksAllowOverrideAllAlias aliasnew2 var 给目标 新 目录定义别名为 aliasnew2 后面 htaccess文件中要用到此别名OptionsFollowSymLinksAllowOverrideNone说明 由于源和目标不在同一个文档根下 在访问时必须用别名 67 2 创建源和目标目录及测试文件 mkdir var mkdir var vi var 内容如下 thisis var 68 3 在源 旧 目录 var 中创建 htaccess文件 其内容如下 RewriteEngineOnRewriteBase aliasnew2 RewriteRule 1 R 301 说明 此处需要说明的是 由于目标 新 目录不在文档根下 所以在访问时需要用到别名 在此处定义重写基础目录时设置的目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论