Apache简介
1、Apache起源
- 源于A Patchy Server,著名的开源Web服务软件
- 1995年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server"
- 官方站点:http://httpd.apache.orgl
2、Apache主要特点
- 开放源代码、跨平台应用
- 支持多种网页编程语言
- 模块化设计、运行稳定、良好的安全性
3、Apache的软件版本
- 1.X
- 目前最高版本是1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新的功能
- 2.X
- 目前最高版本是2.4
- 具有更多的功能特性
- 与1.X相比,配置管理风格存在较大差异
Apache的基本安装
1、关闭防火墙
[root@web ~]# systemctl stop firewalld
[root@web ~]# setenforce 0
2、导入数据包,关闭防火墙和核心防护
[root@web opt]# ll
总用量 8020
-rw-r--r-- 1 root root 1071074 10月 23 2017 apr-1.6.2.tar.gz
-rw-r--r-- 1 root root 565507 10月 23 2017 apr-util-1.6.0.tar.gz
-rw-r--r-- 1 root root 6567926 11月 27 2017 httpd-2.4.29.tar.bz2
3、解压数据包
[root@web opt]# tar zxvf apr-1.6.2.tar.gz
[root@web opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@web opt]# tar jxvf httpd-2.4.29.tar.bz2
4、移动http服务的依赖包解决依赖关系(apache的http服务依赖apr和apr-util这两个包)
[root@web opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@web opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
5、安装编译环境
[root@web opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre \
zlib-devel \
pcre-devel \
expat-devel \
perl
6、设置安装选项
[root@web opt]# cd httpd-2.4.29/
[root@web httpd-2.4.29]#
./configure \ #配置你的安装选项,可以根据不同需求设置不同的配置
--prefix=/usr/local/httpd \ #启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
--enable-so \ #启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化及目录迁移维护
--enable-charset-lite \ #启动字符集支持,以便支持使用各种字符集编码的网
--enable-cgi \ #启用 CGI 脚本程序支持,便于扩展网站的应用访问能力
--enable-cgid \ # 启用用一个外部 CGI 守护进程执行CGI脚本
--enable-deflate \ #增加压缩模块
--enable-gzip #启用gzip压缩模块
7、编译安装(将文件转变为二进制文件)
[root@web httpd-2.4.29]# make && make install #make:编译 make install:编译安装
8、优化路径
8.1、将http的配置文件使用软连接到etc方便修改配置文件
[root@web httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
8.2、将应用程序工具的必备执行文件链接到/usr/local/bin下面
[root@web httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
9、设置httpd启动进程,使用chkconfig工具进行管理
[root@web ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@web ~]# vim /etc/init.d/httpd
在#!/bin/sh下面添加
#chkconfig: 35 80 20
10、启动httpd服务
[root@web ~]# chkconfig --add httpd
[root@web system]# systemctl start httpd.service
11、查看服务是否启动
[root@web system]# netstat -anptu|grep 80
tcp6 0 0 :::80 :::* LISTEN 34257/httpd
Apache网页优化
1、网页压缩
1、gzip介绍
1.1、配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
1.2、作用
1.2.1、降低了网络传输的字节数:加快网页加载的速度
1.2.2、节省流量,改善用户的浏览体验
1.2.3、gzip与搜索引擎的抓取工具有着更好的关系
2、Apache的压缩模块
2.1、Apache实现网页压缩的功能模块包括:mod_gzip模块和mod_deflate模块
2.2、Apache 1.X:没有内建网页压缩技术,但可使用第三方mod_gzip模块执行压缩
2.3、Apache 2.X:在开发的时候,内建了mod_deflate这个模块,取代mod_gzip
2.4、mod_gzip模块与mod_deflate模块
2.4.1、两者均使用gzip压缩算法,运作原理类似
2.4.2、mod_deflate压缩速度略快,而mod_gzip的压缩比略高
2.4.3、mod_gzip对服务器CPU的占用要高一些
2.4.4、高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快
3、配置网页压缩功能
3.1、启用网页压缩功能的步骤
3.1.1、查看是否安装mod_deflate模块
3.1.2、修改配置文件启用压缩功能
3.1.3、访问测试
3.2、配置网页压缩
1、开启服务并开启压缩模块
[root@web ~]# vim /etc/httpd.conf
LoadModule deflate_module modules/mod_deflate.so 去掉#,表示开启压缩模块
在末尾添加如下:
1、要压缩的文件类型
AddOutputFilterByType DEFLATE text/plain text/css text/xml text/javascript image/png image/jpg image/jpeg application/x-httpd-php application/x-javascript
2、压缩等级
DeflateCompressionlevel 9
3、告诉apache对传输到浏览器的内容进行压缩
SetOutputFilter DEFLATE
2、设置测试主页
[root@web ~]# echo "<html><body><h1>this is a web</h1><img src=a.jpg / ></body></html>" >/usr/local/httpd/htdocs/index.html
在/usr/local/httpd/htdocs/这么目录下面放入一张名为a.jpg的图片
3、重启httpd服务
[root@web ~]# systemctl restart httpd.service
4、测试
2、网页缓存
1、配置网页的缓存时间
2、通过mod_expire模块配置Apache,使用能在客户端浏览器缓存一段时间,以避免重复请求
3、启用mod_expire模块后,会自动生成页面头部信息中的Expire标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
4、启用网页缓存功能
[root@web ~]# vim /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so 去掉#
在主配置文件末尾添加如下:
<IfModule mod_expires>
ExpiresActive On ##开启缓存功能
ExpiresDefault "access plus 60 seconds" #缓存时间为60秒
</IfModule>
5、重启服务测试
[root@web ~]# systemctl restart httpd.service
6、测试
Apache安全优化
1、隐藏版本信息
1.1、Apache的版本信息,透露了一定的漏洞信息从而给网站带来安全隐患
1.2、配置隐藏版本
[root@web ~]# vim /etc/httpd.conf
Include conf/extra/httpd-default.conf 去掉#,表示开启隐藏版本的功能模块
[root@web ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
#服务器回应给客户端的应答头是否包含关于服务器操作系统类型和编译进的模块描述信息
ServerTokens Pord #默认为Full(表示开启)修改为Pord(关闭)
Serversignature Off #增加
1.3、重启服务
[root@web ~]# systemctl restart httpd.service
1.4、测试
2、配置防盗链
1、防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片,文件,视频等相关资源
2、如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
3、作为网站的维护人员,要杜绝服务器的静态资源被其他网站利用
实验环境:
一、盗贼服务器需要进行如下配置
1.1、安装http服务
[root@dao ~]# yum -y install httpd
1.2、设置主页进行盗图
[root@dao ~]# echo "<html><body><h1>server 2</h1><img src=http://20.0.0.10/a.jpg / ></body></html>"> /var/www/html/index.html
1.3、重启·服务
[root@dao ~]# systemctl restart httpd.service
1.4、测试盗图是否成功
图片的地址是20.0.0.10盗图成功
二、设置防盗
2.1、修改配置文件
[root@web ~]# vim /etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so 去掉#,开启rewrite模块
在<Directory>标签进行如下设置设置:
<Directory /usr/local/httpd/htdocs> #定义"/"目录区域的开始
RewriteEngine On
1、配置成功的条件
RewriteCond %{HTTP_REFERER} !^http://20.0.0.10/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://20.0.0.10$ [NC]
RewriteCond %{HTTP_REFERER} !^http://20.0.0.10/*
2、配置不成功跳转到的位置
RewriteRule .*\.(gif|jpg|swf)$ http://20.0.0.10/b.png [R,NC]
</Directory>
2.2上传跳转后的图片
[root@web htdocs]# ll
总用量 24
-rw-r--r-- 1 root root 10774 11月 11 14:52 a.jpg
-rw-r--r-- 1 root root 5962 11月 11 16:32 b.png
-rw-r--r-- 1 root root 67 11月 11 14:53 index.html
2.3、重启服务
[root@web htdocs]# systemctl restart httpd.service
[root@dao ~]# systemctl restart httpd.service
2.4、测试
发现盗图失败