已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第6章Apache服务,本章要点:Apache主配置文件httpd.conf访问控制虚拟主机重定向重写规则,2,3,61Apache概述,Apache是一款著名的Web服务器软件。在Internet上,Apache是占有率最高的Web服务器。当前,Apache主要有两种流行的版本,第一种是1.3版,这是比较早期但十分成熟稳定的版本,目前使用率仍很高;第二种是2.0版,这是Apache最新的版本,增加和完善了一些功能。RHEL7.0中的Apache服务采用的是2.4.6版,4,611Apache的功能,下面列举出Apache的主要功能:1)支持HTTP1.1标准。2)支持多种脚本语言如,perl、php、jsp等。3)支持多种用户认证机制,如.htaccess文件、mysql数据库、openldap目录等。4)支持虚拟主机。5)支持访问控制。6)支持重定向和重写规则。7)支持SSL。,5,612Apache的安装,在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工具软件包。可通过#rpmivhhttpd*.rpm或采用yum来进行安装,如下:#yuminstallhttpdhttpd-toolshttpd-manual执行如下命令,来安装上述3个软件包,6,613Apache的运行,在RHEL4.0中,有两种典型启动Apache的方法:方法一:rootserver1#servicehttpdstart方法二:rootserver1#apachectlstart如果要设置每次开机时自动运行Apache服务器,可执行如下指令:rootserver1#chkconfighttpdon,7,通过如下命令来检查运行状态:rootserver1#servicehttpdstatus通过如下命令来检查语法:rootserver1#apachectlconfigtest或rootserver1#httpd-t通过如下命令来查看编译时的配置参数:rootserver1#httpdV通过如下命令来查看已经被编译到Apache中的模块:rootserver1#httpdl,8,62Apache的配置文件,621Apache配置文件的结构Apache的配置文件是/etc/httpd/conf/httpd.conf(1)Section1:GlobalEnvironment这段的功能是控制Apache服务器进程的全局操作。(2)Section2:Mainserverconfiguration这段的功能是处理任何不被段处理的请求,即提供默认处理。请注意,section2中指令都可以写在虚拟主机段中。(3)Section3:VirtualHosts这段的功能是提供虚拟主机配置。,9,622Apache配置指令,1Section1:GlobalEnvironment段的配置指令(1)ServerRoot/etc/httpd功能:设置服务器的根目录。说明:在Apache配置文件中如果文件名不以“/”开头,则认为是相对路径,会在文件名前加上ServerRoot命令指定的默认路径名。(2)Listen80功能:设置Apache服务器监听的端口号为80。说明:也可以设置Apache服务器监听的IP地址和端口号,如Listen8: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,(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,11,12,2Section2Mainserverconfiguration段,(1)设置管理员邮箱ServerAdminrootlocalhost功能:设置Apache服务器管理员的邮箱。(2)设置服务器名称和端口号#ServerN:80功能:设置Apache默认站点的名称和端口号。,13,(3)根目录的访问控制AllowOverridenoneRequirealldenied功能:在mainserver段中有很多个Directory指令配置段,它的写法有些类似HTML的格式。表示要对文件系统的目录进行限制。AllowOverrideNone表示不允许覆盖,即不允许其他文件(.htaccess)中配置覆盖当前的设置。AllowOverride的值参见表6-1所示:,14,(5)对文档根父目录的访问控制AllowOverrideNone#Allowopenaccess:Requireallgranted功能:对文档根的父目录“/var/www”放松限制,不允许覆盖当前设置且开放无条件访问。这是Apache2.4版中默认配置文件中的新设置,由于权限比较宽松,因此需要注意安全问题。,15,(6)对文档根的访问控制功能:针对文档根目录/var/www/html进行限制。OptionsIndexesFollowSymLinks功能:设置允许跟随符号连接;Indexes的含义是如果要访问的文档不存在,则会显示出该目录下的文件目录清单。AllowOverrideNone功能:不允许覆盖当前配置,即不处理.htaccess文件。Requireallgranted功能:允许从任意地址访问该目录。Options的值参见表6-2所示:,16,17,表6-2Options选项值及其含义,(7)设置默认文档名DirectoryIndexindex.html功能:设置每个目录的默认文档名。说明:当访问网站时如果没有指定具体的文档,则会在指定的目录下找有没有默认文档存在,如果有则显示。(8)文件访问控制Requirealldenied功能:无条件禁止访问文件名中包含“.ht”的文件。,18,(9)设置错误日志ErrorLoglogs/error_log功能:指定错误日志的存放位置。(10)设置日志级别LogLevelwarn功能:指定日志记录的级别。(11)设置日志格式LogFormat%h%l%u%t%r%s%b%Refereri%User-AgenticombinedLogFormat%h%l%u%t%r%s%bcommonLogFormat%h%l%u%t%r%s%b%Refereri%User-Agenti%I%OcombinedioCustomLoglogs/access_logcombined功能:利用LogFormat指令设置记录日志时采用的格式;利用CustomLog指令设置访问日志的位置和类型。,19,(12)设置CGI脚本目录的别名ScriptAlias/cgi-bin/var/www/cgi-bin/功能:定义CGI脚本目录的别名,即将/cgi-bin/定义为/var/www/cgi-bin/的别名。说明:一般情况下,/cgi-bin/中存放的是CGI脚本程序,而且脚本程序应该位于文档根目录之外,所以采用了别名(虚拟目录)的方式。接下来,仍然是对脚本别名所对应的真实目录做限制的配置段,内容如下:AllowOverrideNoneOptionsNoneRequireallgranted,20,(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。,21,(15)MIMEMagic模块MIMEMagicFileconf/magic功能:允许服务器根据文件内容的各种提示来决定其类型。(16)采用sendfile系统调用来传递文件EnableSendfileon功能:采用内存映射或sendfile系统调用来传递文件。这通常可以提高服务器的性能,但是在基于网络挂装的文件系统上,必须关闭此特性。(17)包含可选的配置文件IncludeOptionalconf.d/*.conf功能:包含/etc/httpd/conf.d目录下所有以.conf结尾的配置文件,这些可选的“小配置文件”是主配置文件的重要扩展和补充。,22,23,63Apache的配置示例,631主机访问控制1.主机访问控制示例一:Orderallow,denyAllowfrom/24Denyfrom23功能:除了23以外,/24网段的其他机器可以访问该目录。说明:Order定义了allow与deny指令的执行顺序,如果二者有矛盾的话,以后执行的指令为准。需要注意的是allow、deny指令的执行顺序与下面的Allowfrom、Denyfrom语句的书写顺序无关。,24,主机访问控制示例三:Orderallow,denyAllowfromallDenyfromall功能:禁止所有主机从任何地点访问该目录。Orderdeny,allowAllowfrom23Denyfrom23功能:允许IP地址为23的主机可以访问该目录。,25,关于主机访问控制有以下说明:1)Order命令中指定的顺序至关重要,写在后面的关键字有最终决定权。2)IP地址的表示方法比较灵活,可以有如下写法:网络/子网掩码:如/。CIDR规范:如/24。单个IP地址的表示:23。3)支持域名例如,A功能:表示允许域中所有主机访问。,26,632用户访问控制,下面通过示例来具体介绍认证授权的实现。(1)首先,编辑Apache的主配置文件httpd.conf,在需要进行认证授权的目录中进行配置。#对目录“/var/www/html/test”进行访问控制。AllowOverrideAuthConfig#表示允许覆盖,即允许在文件.htaccess中使用认证授权。说明:.htaccess应该位于“/var/www/html/test”目录中。另外,AllowOverride的值还可以是All,也能实现此功能。,27,(2)在需要认证和授权的目录中,即“/var/www/html/test”目录中创建名为.htaccess的文件,其内容如下:AuthName“TestArea”AuthTypeBasicAuthUserFile/var/mypasswdRequirevalid-user,28,(3)创建口令文件。按照.htaccess中AuthUserFile指定的文件名,来创建口令文件/var/mypasswd。执行如下命令:#htpasswdc/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在客户机上,进行认证授权的测试,在浏览器地址栏中输入如下内容:02/test/效果如图6-1所示:,31,图6-1认证授权,32,图6-2未通过与通过认证授权,33,633虚拟主机,Apache实现的虚拟主机主要有3种类型:一是基于IP地址的虚拟主机;二是基于端口的虚拟主机;三是基于名字的虚拟主机。,34,1基于IP地址的虚拟主机,思路:在同一台主机上配置多个IP地址,每个IP地址对应一个虚拟主机。第一步,在一台主机上配置多个IP地址,执行如下命令。#ifconfigeth0:03netmask功能:eth0:1为eth0的子接口,该命令创建了子接口eth0:1,同时为该接口配置了IP地址03。,35,第二步,编辑Apache的配置文件,在文件的末尾追加以下内容:ServerAdminwebmasterDocumentRoot/www/iproot1ServerName02ErrorLoglogs/02-error_logCustomLoglogs/02-access_logcommonServerAdminwebmaster2DocumentRoot/www/iproot2ServerName03ErrorLoglogs/03-error_logCustomLoglogs/03-access_logcommon,36,第三步,建立两个虚拟主机的文档根目录及相应测试页面。#mkdirp/www/iproot1#mkdirp/www/iproot2#vi/www/iproot1/index.html内容如下:thisistheIP_basedVirtualHost02!#vi/www/iproot2/index.html内容如下:thisistheIP_basedVirtualHost03!,37,第四步,运行与测试。#servicehttpdrestart#elinks02说明:利用RHEL7.0中提供的文本浏览器elinks来测试。#elinks03,38,2基于端口的虚拟主机,思路:在同一台主机上针对一个IP地址和不同的端口来建立虚拟主机,即每个端口对应一个虚拟主机。第一步,建立新的子接口并配置IP地址为04#ifconfigeth0:04netmask,39,第二步,编辑Apache的主配置文件httpd.conf,增加监听的端口号8001和8002在Section1中增加两行配置,分别监听8001和8002端口Listen80Listen8001Listen8002,40,第三步,编辑Apache的主配置文件httpd.conf,建立基于端口的虚拟主机配置段,内容如下:ServerAdminwebmaster3DocumentRoot/www/portroot1ServerName04ErrorLoglogs/04-8001-error_logCustomLoglogs/04-8001-access_logcommonServerAdminwebmaster4DocumentRoot/www/portroot2ServerName04ErrorLoglogs/04-8002-error_logCustomLoglogs/04-8002-access_logcommon,41,3基于名字的虚拟主机,思路:在同一台主机上针对相同的IP地址和端口号建立基于名字的虚拟主机。第一步,在DNS服务器的区域数据库文件中增加两条A记录和两条PTR记录。为了不影响前面的虚拟主机,这里再增加一个子接口,并配置为05。#ifconfigeth0:305netmask接下来,配置DNS以支持新的域名解析。DNS正向区域数据库中增加的记录如下:.INA.INA05,42,第二步,编辑Apache的主配置文件,激活基于名字的虚拟主机,并建立两个基于名字的虚拟主机配置段。NameVirtualHost05:80功能:针对05:80配置基于名字的虚拟主机。说明:这是非常重要的一条指令,正是该指令的作用才激活了基于名字的虚拟主机的功能。,43,NameVirtualHost05:80ServerAdminwebmaster5DocumentRoot/www/nameroot1ServerNErrorLoglogs/-error_logCustomLoglogs/-access_logcommonServerAdminwebmaster6DocumentRoot/www/nameroot2ServerNErrorLoglogs/-error_logCustomLoglogs/-access_logcommon,44,第三步,建立两个虚拟主机的文档根及主页。#mkdir-p/www/nameroot1#mkdir-p/www/nameroot2#vi/www/nameroot1/index.html内容如下:welcometoname_basedVirtualH.#vi/www/nameroot2/index.html内容如下:welcometoname_basedVirtualH.,45,第四步,运行与测试。#servicehttpdrestart#,46,64Apache的高级配置,641重定向Redirect指令的格式如下:Syntax:RedirectstatusURL-pathnew-URL说明:new-URL不能是相对路径,必须是FQDN。,47,重定向示例一:编辑Apache的主配置文件httpd.conf,在Section2mainserverconfiguration中增加如下指令:Redirect/tools02/oldtools功能:当客户访问02/tools时,将被重定向为02/oldtools。,48,重定向示例二:Redirectpermanent/one,49,642重写规则,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/www/html)下有两个目录,一个是原来存放文档的旧目录/var/www/html/realold1,一个是现在存放文档的新目录/var/www/html/realnew1。客户通过旧名字仍然可以访问原来的文档,即将/realold1/重定向到/var/www/html/realnew1目录。具体实现步骤如下:,59,1)在Apache主配置文件httpd.conf中,输入以下内容:#针对源(旧)目录进行设置OptionsFollowSymLinks#要用重写规则,必须激活FollowSymLinks选项AllowOverrideAll#允许覆盖,即采用.htaccess文件中的配置,下面在该文件中写入重写规则#针对目标(新)目录进行设置OptionsFollowSymLinksAllowOverrideNone#不允许覆盖,60,2)创建源、目录两个目录及测试文件#mkdir/var/www/html/realold1,new1#vi/var/www/html/realnew1/index.html内容如下:thisis/var/www/html/realnew1/index.html,61,3)在源(旧)目录中创建.htaccess文件,内容如下:RewriteEngineONRewriteBase/realnew1/RewriteRule(.*)$1R=301说明:RewriteEngineON激活重写引擎。RewriteBase/realnew1/是目录级重写指令,用来设置重写URL的基础目录;,62,说明(续)RewriteRule(.*)$1R=301此指令有3部分参数:第1个参数Pattern的值为(.*)$,这是一个正则表达式,其含义是任意字符开头或结尾的字符串,其中“()”用来定义后向引用,也称为组;第2个参数Subsititution的值是$1,用来引用前面Pattern中定义的第一对“()”中的内容;第3个参数的值是R=301,R表示外部重定向,301表示永久移动。,63,4)测试,在客户机上输入/realold1/,参见图6-5所示。,图6-5重写规则应用之重定向之前,64,按键后,出现如下内容,参见图6-6,图6-6重写规则应用之重定向效果,65,(2)目标不在文档根下的示例,本示例的文档根仍为/var/www/html,源(旧)目录为/var/www/html/realold2,目标(新)目录是/var/www/html2/realnew2。很明显二者不在同一个文档根下,下面介绍具体实现步骤。,66,1)编辑Apache主配置文件httpd.conf,加入以下内容:#针对源(旧)目录进行设置OptionsFollowSymLinksAllowOverrideAllAlias/aliasnew2/var/www/html2/realnew2/#给目标(新)目录定义别名为/aliasnew2/,后面.htaccess文件中要用到此别名OptionsFollowSymLinksAllowOverrideNone说明:由于源和目标不在同一个文档根下,在访问时必须用别名。,67,2)创建源和目标目录及测试文件:#mkdir/var/www/html/realold2#mkdir/var/www/html2/realnew2#vi/var/www/html2/realnew2/index.html内容如下:thisis/var/www/html2/realnew2/index.html,68,3)在源(旧)目录/var/www/html/realold2中创建.htaccess文件,其内容如下:RewriteEngineOnRewriteBase/aliasnew2/RewriteRule(.*)$1R=301说明:此处需要说明的是,由于目标(新)目录不在文档根下,所以在访问时需要用到别名,在此处定义重写基础目录时设置的目录也为别名,而且与Apache主配置文件中定义的别名相同,即/aliasnew2/。其他指令的功能同上例,这里不再赘述。,69,4)测试,在客户机上输入/realold2/,参见图6-7所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来五年出租数字电路服务企业ESG实践与创新战略分析研究报告
- 未来五年数字化装饰设计企业数字化转型与智慧升级战略分析研究报告
- 未来五年人造革合成革企业ESG实践与创新战略分析研究报告
- 未来五年干坚果脱壳机行业跨境出海战略分析研究报告
- 2025年肺癌心理护理试题及答案
- 2025年秋季小学三年级上册数学期中测试卷及答案
- 2025年人工智能初步考试题及答案
- 2025年驾照科目一考试模拟题冲刺试卷及答案
- 2025年喜茶员工考试题目及答案
- 2025年幼儿照护高级题库及答案
- 合伙酒店承包协议书
- 流动式起重机吊装施工方案
- 2017年版2025年修订 普通高中信息科技课程标准核心解读
- 水利工程现场管理
- 一元一次方程 数学活动 生活中的阶梯计价问题课件 2025-2026学年人教版七年级数学上册
- 教育部发布法学本科专业教学质量国家标准
- 焊接设备操作工标准化技术规程
- 8.2 守护正义课件 - 2025-2026学年统编版道德与法治八年级上册
- 2025广西自然资源职业技术学院下半年招聘工作人员150人考试笔试备考题库及答案解析
- 2025年大学《管理学-市场营销学》考试参考题库及答案解析
- 公司高规格客人接待流程
评论
0/150
提交评论