Apache网页优化

网页压缩与缓存

网页压缩

不需要成本的提升Apache本身的响应速度,仅会让服务器CPU占用率升高一到两个百分点或更少

1.gzip介绍

是一种流行的文件压缩算法。使用gzip压缩一个纯文本时,效果尤为明细。利用Apache中的gzip模块,可以使用gzip压缩算法对Apache服务器发布的网页的内容进行压缩后再传输到客户端浏览器,加快了网页加载到速度

2.HTTP压缩过程

Web服务器接受到HTTP请求后 ,检查浏览器是否支持HTTP压缩。如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名。如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已存在请求文件的最新压缩文件,如果不存在,服务器返回未压缩的文件,在浏览器的压缩缓冲目录

3.apache的压缩模块

mod_deflate和mod_gzip

mod_deflate对服务器cpu占用较低,但压缩率比mod_zip高

mod_gzip对服务器cpu占用更高,但压缩率更高

网页压缩的实现过程

查看浏览器支持哪些压缩方式

此界面在浏览器中按f12来打开,Accept-Encoding表示支持的压缩方式

安装mod_deflate

首先检查是否已安装mod_deflate

cpp 复制代码
apachectl -t -D DUMP_MODULES | grep deflate

下载并解压httpd的源码包,进入到其中的./modules/filter文件夹中,运行以下命令来进行安装

cpp 复制代码
/usr/local/httpd/bin/apxs -i -c -a mod_deflate.c 
启用mod_deflate

需要去httpd的主配置文件中进行

cpp 复制代码
[root@localhost ~]# 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 text/jpg text/png #压缩的文件类型
DeflateCompressionLevel 9  //压缩级别
SetOutputFilter DEFLATE    //是否启用压缩
</IfModule>

更改完成后重启httpd服务

用浏览器来访问该网站的目录,若响应标头中有下图中的信息即为成功

网页缓存

步骤

全程在httpd的主文件中进行更改

在httpd.conf中查找expires,找到LoadModule expires_module modules/mod_expires.so,并取消注释,之后在这段代码后添加

cpp 复制代码
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>

然后重启服务,在浏览器中进行测试

如图中信息包含expires项 ,说明网页缓存配置成功

版本信息隐藏

软件的漏洞信息和特定版本是相关的,因此软件版本号一般是需要隐藏的,可以减少受攻击的风险,保护服务器的安全运行

首先在主配置文件中,取消该行注释

cpp 复制代码
Include conf/extra/httpd-default.conf

然后进入到安装目录下的/conf/extra,编辑httpd-default.cof

cpp 复制代码
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minor | Minimal | Major | Prod            //修改显示级别可用的选项,从左到右显示的越来越少
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full                                        

网页防盗链

防止其他网站直接使用我的网站上的的链接,来占用我服务器的资源

模拟防盗链

配置主机

首先要准备三台主机

其中apache1为我的主机,apache2为盗链主机,win11主机则是模拟用户

修改apache2,和用户主机的hosts文件,在其中添加

cpp 复制代码
192.168.10.101 www.benet.com
192.168.10.102 www.accp.com

在我的主机中编辑默认网页index.html

cpp 复制代码
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It work! </h1>
<img src="logo.jpg"/>
</body>
</html>

在盗链主机中编辑默认网页

cpp 复制代码
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It work! </h1>
<img src="www.benet.com/logo.jpg"/>        //直接引用我的主机的图片链接
</body>
</html>

防盗链

修改httpd的主配置文件

找到LoadModule rewrite_module modules/mod_rewrite.so并取消注释

再找到<Directory "/usr/local/httpd/htdocs">,在其下添加如下内容

cpp 复制代码
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://benet.com$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png

重启httpd服务后再访问盗链主机就是这样的

相关推荐
鸠摩智首席音效师8 分钟前
如何在 Apache 中创建单个文件的别名 ?
apache
Hello.Reader1 天前
深入解析 Apache APISIX
java·apache
hwscom1 天前
如何永久解决Apache Struts文件上传漏洞
java·服务器·struts·web安全·apache
白开水2331 天前
Apache RocketMQ 5.1.3安装部署文档
apache·rocketmq
s甜甜的学习之旅2 天前
Apache POI练习代码
apache
是小崔啊2 天前
开源轮子 - Apache Common
java·开源·apache
程序猿阿伟2 天前
《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
java·spark-ml·apache
开心工作室_kaic3 天前
springboot461学生成绩分析和弱项辅助系统设计(论文+源码)_kaic
开发语言·数据库·vue.js·php·apache
cr.sheeper3 天前
Vulnhub靶场Apache解析漏洞
网络安全·apache
ccc_9wy4 天前
Apache Solr RCE(CVE-2017-12629)--vulhub
apache·solr·lucene·burp suite·vulhub·远程命令执行漏洞rce·cve-2017-12629