Web服务器群集——Apache网页与安全优化

Apache网页优化

网页压缩

  • 网站访问速度影响因素:应用程序响应速度、网络带宽、服务器性能、与客户端之间网络传输速度等。
  • 其中最重要的是一个因素是Apache本身,因此提升Apache执行速度(使用网页压缩)是性价比最高的选择。

作用:

  • 降低了网络传输的字节数,加快网页加载的速度
  • 节省流量,改善用户的浏览体验
  • gzip与搜索引擎的抓取工具有着更好的关系

Apache实现网页压缩的功能模块包括

  • mod_gzip 模块
  • mod_deflate 模块

Apache 1.x

  • 没有内建网页压缩技术,但可使用第三方mod_gzip 模块执行压缩

Apache 2.x

  • 在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip

mod_gzip 模块与mod_deflate 模块

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_deflate 压缩速度略快,而mod_gzip 的压缩比略高
  • mod_gzip 对服务器CPU的占用要高一些
  • 高流量的服务器,使用mod_deflate 可能会比mod_gzip 加载速度更快
# 检查是否安装该模块
[root@lamp bin]# ./apachectl -t -D DUMP_MODULES | grep deflate
 deflate_module (shared)

# 如果没有重新编译安装
# 关闭httpd
# 重新编译安装时增加选项:--enable-deflate

# 启用模块:在httpd.conf文件中添加
[root@lamp bin]# vim /usr/local/httpd/conf/httpd.conf

LoadModule deflate_module modules/mod_deflate.so

将注释取消
在这里插入图片描述

<IfModule mod_deflate.c>
       AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml	text/javascript # 代表对什么样的内容启用gzip压缩
       DeflateCompressionLevel 9	# 压缩级别 9是最高
       SetOutputFilter DEFLATE	#启用deflate模块对本站点的输出进行gzip压缩
       
</IfModule>

# 检查语法
[root@lamp bin]# ./apachectl -t
Syntax OK

# 重启
[root@lamp bin]# systemctl restart httpd

# 浏览器F12检查
# 请求头里
Content-Encoding: gzip
# 返回头里
Accept-Encoding: gzip, deflate

在这里插入图片描述
看到gzip说明网页压缩配置成功

网页缓存

  • 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求

  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

# 检查模块是否安装
[root@lamp bin]# ./apachectl -M |grep expires
 expires_module (shared)


# 如果没有 则重新编译安装并加入选项:--enable-expires

# 配置启用模块:修改httpd.conf
[root@lamp bin]# vim /usr/local/httpd/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so

<IfModule mod_expires.c>
        ExpiresActive on
        ExpiresDefault "access plus 1 month"
</IfModule>

# 可选
# ExpiresDefault "access plus 1 month"
# ExpiresDefault "access plus 4 weeks"
# ExpiresDefault "access plus 30 days"


# ExpiresByType text/html "access plus 1 month 15 days 2 hours"
# ExpiresByType image/gif "modification plus 5 hours 3 minutes"

# 检查语法
[root@lamp bin]# ./apachectl -t
Syntax OK

# 打开浏览器
Expires: Wed, 11 Jan 1984 05:00:00 GMT

这里可以看见网页缓存成功
在这里插入图片描述

注意点
对于动态页面,如果在页面内部没有通过函数强制加上Expires,例如header(”Expires: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”),Apache服务器会把Wed, 11 Jan 1984 05:00:00 GMT作为Expires字段内容,返回给浏览器。即认为动态页面总是失效的。而浏览器仍然会保存已经失效的动态页面。

Apache安全优化

配置防盗链

  • 防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源
  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
  • 所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用
ip地址 用途
192.168.188.188 源主机
192.168.188.158 盗链主机

目前源主机上部署了wordpress
然后我发布一个图片

# 在正版网站加入图片
[root@lamp htdocs]# chmod -R a+w wp-content
[root@lamp htdocs]# ls

在这里插入图片描述
然后我们去盗链网站上盗取图片链接

# 在盗版主机上写一个index.html
[root@maomao html]# vim index.html
<html>
<head>
        <h1>It works!</h1>
</head>
<body>
        <img src="http://192.168.188.188/wp-content/uploads/2021/03/mao1.jpg"/>
</body>
</html>

目前盗链网站可以盗取图片
在这里插入图片描述
我们在正版服务器上做防盗链

# 做防盗链之前先查看日志 才能知道是不是有人盗取我们的资源
[root@lamp logs]# tailf wordpree_20210319.log 

192.168.188.1 - - [19/Mar/2021:02:01:24 -0400] "GET /wp-content/uploads/2021/03/mao1.jpg HTTP/1.1" 200 237948 "http://192.168
.188.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"

#发现158的ip使用wp-content/uploads/2021/03/mao1.jpg图片

设置防盗链

# 设置防盗链
[root@lamp bin]# ./apachectl -t -D DUMP_MODULES | grep rewrite

# 编辑httpd.conf文件
# 配置规则变量说明
# %{HTTP_REFERER}:浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
# !^:不以后面的字符串开头
# .*?:不以任意字符结尾
# .*$:以任意字符结尾
# NC:不区分大写
# R:强制跳转
# ?:匹配0-1个字符
# *:匹配0到多个字符
# +:匹配1到多个字符
# ^:字符串开始标志
# $:字符串结束标志
# .:匹配任意单字符

# 取消注释 开启rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so
	
	Require all granted
    RewriteEngine On	# 开启引擎
    # 限制只能是http://192.168.188.188/
    RewriteCond %{
    
    HTTP_REFERER} !^http://192.168.188.188/.*$ [NC]	
    RewriteCond %{
    
    HTTP_REFERER} !^http://192.168.188.188$ [NC]
    RewriteRule  .*\.(png|jpg|jpeg|gif)$  -F	# 如果不是则拒绝访问图片
    
[root@lamp bin]# ./apachectl -t
Syntax OK
[root@lamp bin]# systemctl restart httpd

使用浏览器访问正版网站 可以看见图片
在这里插入图片描述

使用浏览器访问盗链网站,清除浏览器缓存之后
在这里插入图片描述
图片已经无法显示 说明防盗链成功

隐藏版本信息

  • Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
  • 生产环境中要配置Apache隐藏版本信息
# 编辑主配置文件httpd.conf
# 将注释取消
Include conf/extra/httpd-default.conf

[root@lamp bin]# vim /usr/local/httpd/conf/extra/httpd-default.conf 
ServerTokens Prod
ServerSignature Off

# 打开浏览器F12
Server: Apache	# 不显示版本号了

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Cantevenl/article/details/115183000