Web 进阶——Apache

一、Apache 优化

准备工作

主机名操作系统IP地址版本号
ApacheCentOS 7.4192.168.1.1httpd-2.2.17.tar.gz
DaoTuCentOS 7.4192.168.1.2httpd-2.2.17.tar.gz
  • 注意:配置防盗链的时候才需要用到 DaoTu 机器。

1.安装 Apache

[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
[root@Apache ~]# yum -y install zlib-devel
[root@Apache ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make && make install

注解:

  • --enable-deflate:启用 deflate 模块(需安装 zlib-devel 依赖包)
  • --enable-expires:启用网页缓存过期时间模块。

在这里插入图片描述
安装后优化调整

[root@Apache httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/				# 优化执行路径
[root@Apache ~]# httpd -v																# 查看 Apache 版本
[root@Apache ~]# sed -i '97s/^#//g' /usr/local/httpd/conf/httpd.conf					#  # 替换为空
[root@Apache ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd					# 复制启动文件
[root@Apache ~]# /etc/init.d/httpd start												# 启动 Apache 服务
[root@Apache ~]# netstat -anpt | grep 80												# 查看端口是否开启

在这里插入图片描述
将 Apache 主机编译好的,远程复制到 DaoTu 机器中:

[root@Apache ~]# scp -r /usr/local/httpd/ root@192.168.1.2:/usr/local/httpd/

2.配置 Apache 保持连接、网页传输压缩、页面缓存时间

1)保持连接、长连接(Keep-alive)

  • 开启 Apache 服务端的长连接后,当客户端请求完成之后,负责返回给客户端数据的进程并不会直接退出;
  • 而是等待下一个请求的到来,这样做的主要目的是减少了 TCP 的三次握手。
配置项作用
KeepAlive On OFF是否打开保持连接功能
MaxKeepAliveRequests一次 TCP 连接能够传输的最大 HTTP 请求数量
KeepAliveTimeout一次 TCP 连接多次 HTTP 请求之间的最大间隔时间
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
16 KeepAlive On
23 MaxKeepAliveRequests 100
29 KeepAliveTimeout 20
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -i '/httpd-default.conf/s/^#//' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

**加粗样式**
访问抓包验证:
在这里插入图片描述

2)网页传输压缩

客户端在请求服务端数据后,服务端在返回数据包给客户端时,会先对返回的数据进行压缩,压缩之后再传输。

作用:

  • 配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。
  • 通常在 CPU 有空闲,网站带宽占用高时,会启动压缩。

优势:

  • 加快网页加载的速度,改善用户的浏览体验。
  • 降低网络传输带宽,服务器节省流量。
  • 网页压缩有利于搜索引擎的抓取。

方式:Apache 能实现网页压缩功能的模块有 mod_gzip 模块和 mod_deflate 模块。

配置项作用
AddOutputFilterByType DEFLATE test/html test/plain test/css test/xml test/javascript对什么格式的内容启用压缩
DeflateCompressionLevel 9压缩级别为 9,范围是 1-9,数字大压缩率高
SetOutputFilter DEFLATE启动 deflate 压缩方式
[root@Apache ~]# apachectl -D DUMP_MODULES | grep deflate
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf 
AddOutputFilterByType DEFLATE test/html test/plain test/css test/xml test/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

在这里插入图片描述
访问并抓包验证:
在这里插入图片描述

3)页面缓存时间

  • 通过 mod_expires 模块配置 Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力。
  • 启动 mod_expires 模块后,会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签;
  • 从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
[root@Apache ~]# apachectl -D DUMP_MODULES | grep expires
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf 
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 60 seconds"
</IfModule>
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

在这里插入图片描述
访问并抓包验证:
在这里插入图片描述

3.配置 Apache 隐藏版本号

1)第一种方法

  • ServerTokens Prod:显示最少的信息(默认是 Full 显示完整信息)
  • ServerSignature Off:生成页面的页脚。
[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# sed -i 's/ServerTokens Full/ServerTokens Prod/' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# sed -i 's/ServerSignature On/ServerSignature Off/' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

在这里插入图片描述
访问并抓包验证:
在这里插入图片描述

2)第二种方式

如果是源代码编译安装,还可以用修改源代码编译的方式:

  • 进入 Apache 的源码目录下的 include 目录,编辑 ap_release.h 这个文件,然后重新编译安装即可。
[root@Apache ~]# vim /usr/src/httpd-2.2.17/include/ap_release.h
将:
42 #define AP_SERVER_BASEVENDOR "Apache Software Foundation"
43 #define AP_SERVER_BASEPROJECT "Apache HTTP Server"
44 #define AP_SERVER_BASEPRODUCT "Apache"
46 #define AP_SERVER_MAJORVERSION_NUMBER 2
47 #define AP_SERVER_MINORVERSION_NUMBER 2
48 #define AP_SERVER_PATCHLEVEL_NUMBER   17
修改为:
42 #define AP_SERVER_BASEVENDOR "Coco"
43 #define AP_SERVER_BASEPROJECT "Coco"
44 #define AP_SERVER_BASEPRODUCT "CSDN 愿许浪尽天涯"
46 #define AP_SERVER_MAJORVERSION_NUMBER 8
47 #define AP_SERVER_MINORVERSION_NUMBER 8
48 #define AP_SERVER_PATCHLEVEL_NUMBER   8
[root@Apache ~]# cat /usr/local/httpd/build/config.nice
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make clean && make && make install

在这里插入图片描述

[root@Apache ~]# /etc/init.d/httpd stop
[root@Apache ~]# /etc/init.d/httpd start
[root@Apache ~]# netstat -anpt | grep 80
[root@Apache ~]# httpd -v

在这里插入图片描述
访问并抓包验证:
在这里插入图片描述
总结:

  • 第一种方法虽然说可以隐藏版本号,但是不能隐藏服务名;而第二种方法不但可以隐藏服务名,还可以自定义版本号。

4.配置 Apache 防盗链

  • 防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。可以通过 Apache 提供的 rewrite 模块进行优化。

1)添加图片

[root@Apache ~]# vim /usr/local/httpd/htdocs/index.html
<html>
  <body>
    <h1>It works!</h1>
    <img src="./1.jpg"/>
  </body>
</html>
[root@Apache ~]# cd /usr/local/httpd/htdocs/
[root@Apache htdocs]# ls
1.jpg  index.html
[root@Apache htdocs]# /etc/init.d/httpd start
[root@Apache htdocs]# netstat -anpt | grep 80

在这里插入图片描述

2)配置盗图机器

[root@DaoTu ~]# vim /usr/local/httpd/htdocs/index.htm
<html>
  <body>
    <h1>It works!</h1>
    <img src="http://192.168.1.1/1.jpg"/>
  </body>
</html>
[root@DaoTu ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@DaoTu ~]# /etc/init.d/httpd start
[root@DaoTu ~]# netstat -anpt | grep 80

在这里插入图片描述

3)访问验证

在这里插入图片描述
在这里插入图片描述

4)为 Apche 设置防盗链,防止 DaoTu 网站盗用

配置项作用
RewriteEngine On打开网页重写功能
RewriteCond设置匹配规则
RewriteRule设置跳转动作

Rewrite 的规则:%{HTTP_REFERER} 浏览 header 中链接字段,存放一个连接的 URL,代表是从哪个链接访问所需的页面。

  • !^:不以某个字段开头。
  • .*$:以任意字符结尾。
  • NC:不区分大小写。
  • R:强制跳转。
  • 规则匹配:如果响应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则后面的规则不再继续匹配。
[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf
131 <Directory "/usr/local/httpd/htdocs">
添加如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1/.*$  [NC]
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1$  [NC]
RewriteRule .*\(gif|jpg|swf\)$  http://192.168.1.1/2.png  [R,NC]
</Directory>
[root@Apache htdocs]# ls
1.jpg  2.png  index.html
[root@Apache htdocs]# /etc/init.d/httpd restart
[root@Apache htdocs]# netstat -anpt | grep 80
[root@Apache htdocs]# /etc/init.d/httpd restart

在这里插入图片描述
访问验证:
在这里插入图片描述
在这里插入图片描述

5.Apache 压力测试

  • Apache 附带了压力测试工具 ab,非常容易使用,并且完全可以模拟各种条件对 Web 服务器发起测试请求。
  • 在进行性能调整优化过程中,可用 ab 压力测试工具进行优化效果的测试。
语法:ab -n 请求数总和  -c 并发用户数  网站网址
主要参数作用
Time taken for tests表示所有这些请求被处理完成所花费的总时间。
Failed requests表示失败的请求数量。
Transfer rete表示这些请求在单位时间内从服务器获取的数据长度。

测试:

[root@Apache ~]# /usr/local/httpd/bin/ab -n 1000 -c 200 http://192.168.1.1/

在这里插入图片描述

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值