一、Apache概述安装1. 介绍Apache HTTP Server(简称Apache)是Apache软件基金会的一个开源的网页服务器,是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 apache的服务名称是httpd 2. 安装 [root@compy ~]# yum -y install httpd
3. 快速入门3.1 apache基本管理 # apache状态管理
3.2 站点根目录apache默认站点根目录: 3.3 apache服务目录介绍 # /etc/httpd/
3.4 apache用户apache在安装后会创建一个叫做apache的用户, apache的子进程就是用这个用户运行的 [root@compy www]# tail -1 /etc/passwd
4.apache基本概念4.1 apache进程
查看apache相关进程: [root@compy html]# ps aux | grep httpd
其中root运行的是主进程,apache身份运行的是子进程,主进程的id保存在/etc/httpd/run/httpd.pid文件内。真正用来处理web请求的是子进程,主进程用来管理子进程。 4.2 apache模块
查看模块 [root@compy html]# httpd -M
二、apache配置详解及实践1、配置文件说明
1.2 配置文件格式 #directive(指令) value(值)
2、配置项详解2.1 ServerRoot服务所在目录的路径,不需要做修改 ServerRoot "/etc/httpd"
2.2 Listen监听端口 #Listen 0.0.0.0:80
配置语法
实践 # 1. 修改端口号
2.3 Include导入配置文件 Include conf.modules.d/*.conf
2.4 IncludeOptional和include功能相同,都是导入配置文件的。区别是IncludeOptional导入的路径有问题时会被忽略。不会报错。 IncludeOptional conf.d/*.conf
2.5 User和Grouphttpd服务子进程启动时的账号和组,这个不用修改 User apache
2.6 ServerAdmin服务运行时的管理员邮箱地址 ServerAdmin root@localhost
2.7 DocumentRoot站点根目录 DocumentRoot "/var/www/html"
语法
实践 #DocumentRoot "/var/www/html"
2.8 Directory确定访问目录位置,标签配置。标签内是设置针对该目录的访问权限 <Directory "/var/www/html">
实践 # 1. 去掉Indexes查看效果,注意改完配置后要重启http服务
2.9 IfModule以特定模块存在与否为条件的处理指令 # 如果dir_module存在,执行DirectoryIndex
语法
默认 DirectoryIndex index.html 实践 # 在站点根目录下创建一个index.html
2.10 Files包含适用于匹配文件名的指令 <Files ".ht*">
2.11 ErrorLog错误日志记录位置 ErrorLog "logs/error_log"
2.12 LogLevel错误日志记录级别 LogLevel warn
错误级别选项
2.13 IfModule log_config_module访问日志配置模块 <IfModule log_config_module>
日志格式说明
2.14 IfModule alias_module文档映射 <IfModule alias_module>
Redirect 外部重定向 Alias 将url映射到文件系统个位置 ScriptAlias 将url映射到CGI脚本 2.15 AddDefaultCharset响应内容的编码格式 AddDefaultCharset UTF-8
三、虚拟主机配置虚拟主机指的是在单一机器上运行多个网站. 虚拟主机可以“基于IP”,即每个 IP 一个站点; 或者“基于域名”, 即每个 IP 多个站点。这些站点运行在同一物理服务器上。 虚拟机配置语法 <VirtualHost addr[:port] [addr[:port]] ...>
1、基于域名 # 实践1,配置文件:/etc/httpd/conf.d/iplinux1.conf
2、基于ip # 实践1,配置文件:/etc/httpd/conf.d/iplinux1.conf
四、rewrite重写
1演示现象,解决效果,得出rewrite概念 2-1如何实现具体讲解步骤,可以带入原理 2-2实践 3剖析实现原理,提升知识面 4小结 1、rewrite需求我们在使用Apache做为Web服务器时,有时候出于SEO优化或者是url路径的简洁,需要将输入的url转换成更为友好的url,这时候就可以使用rewrite重写功能。 使用rewrite功能首先需要开启mod_rewrite模块。yum安装的apache默认已经开启。 2、rewrite使用详解rewrite规则可以在Directory指令中进行配置 rewrite学习的三个核心是RewriteEngine,RewriteCond,RewriteRule 2.1 RewriteEnginerewrite功能的总开关,用来开启rewrite重写功能 RewriteEngine on
2.2 RewriteCondRewriteCond定义规则条件,当请求满足RewriteCond配置的条件时,执行RewriteCond后面的RewriteRule语句 比如: RewriteEngine on
上面的规则表示:如果匹配到http请求中HTTP_USER_AGENT是Mozilla//5/.0.*开头的。访问index时,会自动访问到index.html RewriteCond 和 RewriteRule 是上下对应的关系。可以有1个或者好几个RewriteCond来匹配一个RewriteRule **RewriteCond常见的HTTP请求匹配方式 RewriteCond %{HTTP_REFERER} (www.mytest.com)
HTTP_REFERER 判断访问者的来源 案例: RewriteCond %{HTTP_REFERER} (www.mytest.com)
REQUEST_FILENAME 匹配当前访问的文件 案例: RewriteCond %{REQUEST_FILENAME} !-f
2.3 RewriteRuleRewriteRule是配合RewriteCond一起使用的,RewriteRule是RewriteCond成功匹配后的具体执行过程
RewriteRule Pattern Substitution [flags]
五、apache日志切割1、为什么要进行日志切割随着网站访问越来越大,web服务产生的日志文件也会越来越大,这个时候日志文件不仅占用了大量的服务器空间,而且日志分析也很麻烦 2、日志分割两种方式2.1 rotatelogsrotatelogs是apache自带的日志切割工具 案例:使用rotatelogs每天记录一个日志文件 # 编辑httpd主配置文件 /etc/httpd/conf/httpd.conf
说明: 86400为轮转的时间,单位为秒 2.2 cronologCronolog是一款日志轮循(rotation)工具,可以用它来把Apache、Tomcat等Web服务器上输出的日志切分成按日或月保存的文件。 cronolog安装 [root@ ~]# tar zxf cronolog-1.6.2.tar.gz
案例:使用cronologs每天记录一个日志文件 ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log"
扩展:按小时轮询生成日志 CustomLog "|/usr/local/sbin/cronolog logs /access_%Y%m%d%H.log" combined
3 总结推荐使用cronolog,因为cronolog稳定高配置简单。 六、apache防盗链防盗链就是防止别人网站代码里调用我们服务器的图片、文件、视频等资源。如果别人盗用我们的资源,会增加服务器的贷款压力。 通过防盗链的方式,可以设置限制第三方的站点通过引用的方式获取服务器上的图片,如果想要获取本站点的图片数据,只能通过本站点访问获取,这样也有效的减少了服务器的资源。 1、rewrite实现防盗链 1. RewriteEngine On
说明: 第1条:开启rewrite重写 第2~5条:开启授信任的站点,能够访问站点的图片资源 第6条:访问站点的gif|jpg|swf等类型资源时,跳转到 2、SetEnvIfNoCase通过判断浏览器头信息来阻止盗链请求 SetEnvIfNoCase Referer "^$" local_ref
说明: SetEnvIfNoCase 当满足某个条件时,为变量赋值,即根据客户端请求属性设置环境变量。 Referer :指明了请求当前资源原始资源的URL
|
|