Web 进阶——Apache(一)

Web 进阶——Apache(一)

  • 一、Apache 优化
    • 1.安装 Apache
    • 2.配置 Apache 保持连接、网页传输压缩、页面缓存时间
      • 1)保持连接、长连接(Keep-alive)
      • 2)网页传输压缩
      • 3)页面缓存时间
    • 3.配置 Apache 隐藏版本号
      • 1)第一种方法
      • 2)第二种方式
    • 4.配置 Apache 防盗链
      • 1)添加图片
      • 2)配置盗图机器
      • 3)访问验证
      • 4)为 Apche 设置防盗链,防止 DaoTu 网站盗用
    • 5.Apache 压力测试

一、Apache 优化

准备工作

主机名 操作系统 IP地址 版本号
Apache CentOS 7.4 192.168.1.1 httpd-2.2.17.tar.gz
DaoTu CentOS 7.4 192.168.1.2 httpd-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:启用网页缓存过期时间模块。

Web 进阶——Apache(一)_第1张图片
安装后优化调整

[root@Apache httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/				#优化执行路径
[root@Apache ~]# httpd -v																#查看httpd版本
[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												#启动httpd服务
[root@Apache ~]# netstat -anpt | grep 80												#查看端口是否开启

Web 进阶——Apache(一)_第2张图片
将 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

Web 进阶——Apache(一)_第3张图片
访问抓包验证:
Web 进阶——Apache(一)_第4张图片

2)网页传输压缩

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

作用:

  • 配置 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

Web 进阶——Apache(一)_第5张图片
访问并抓包验证:
Web 进阶——Apache(一)_第6张图片

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

Web 进阶——Apache(一)_第7张图片
访问并抓包验证:
Web 进阶——Apache(一)_第8张图片

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

Web 进阶——Apache(一)_第9张图片
访问并抓包验证:
Web 进阶——Apache(一)_第10张图片

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

Web 进阶——Apache(一)_第11张图片

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

Web 进阶——Apache(一)_第12张图片
访问并抓包验证:
Web 进阶——Apache(一)_第13张图片
总结:

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

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

Web 进阶——Apache(一)_第14张图片

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

Web 进阶——Apache(一)_第15张图片

3)访问验证

Web 进阶——Apache(一)_第16张图片
Web 进阶——Apache(一)_第17张图片

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

Web 进阶——Apache(一)_第18张图片
访问验证:
Web 进阶——Apache(一)_第19张图片
Web 进阶——Apache(一)_第20张图片

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/

Web 进阶——Apache(一)_第21张图片

你可能感兴趣的:(Web,Apache,优化,linux,运维,防盗链,隐藏版本号)