一、网页优化
1、网页优化概述
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,
换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
2、优化内容
●配置网页压缩功能
●配置网页缓存
●工作模式的选择与参数优化
●配置隐藏版本号
●配置防盗链
等等...
二、网页压缩
1、检查是否安装modl deflate模块
apachectl -t -D DUMP_ MODULES | grep "deflate" #查看是否已有deflate模块,没有则什么都不显示
2、如果没有安装mod_ deflate 模块,重新编译安装Apache 添加mod_ deflate模块
systemctl stop httpd. service # 停止httpd服务,因为要重新编译
cd /usr/1local/httpd/ conf
mv httpd. conf httpd . conf . bak #进入配置文件所在目录进行备份
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel # 安装Apache环境
cd /opt/httpd-2.4.29/ #切入到脚本所在目录
. /configure \ #执行脚本
--prefix=/usr/loca1/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
-- enable-deflate #加入mod_ _deflate 模块
make && make install #编译和安装
3、配置mod_ deflate 模块启用
vim /usr/1ocal/httpd/conf/httpd.conf #进入并修改配置文件
Listen 192. 198.100.6:80 #--52行--修改监听端口,
LoadModule deflate_ module modules/mod_ deflate. so #105行--取消注释(配置成功才会有这一行,deflate模块)开启mod_ _deflate 模块
--197行--取消注释, 修改
ServerName Www.hello. com: 80 #服务域名,--末行添加--
<IfModule mod_ deflate.c> #里面有模板可复制一个再编辑
AddoutputFilterByType. DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png #代表对什么样的内容启用gzip压缩
DeflateCompressionLevel 6 #代表压缩级别,范围为1~9
SetOutputFilter DEFLATE #代表启用deflate模块对本站点的输出进行gzip压缩
</ I fModule>
4、检查安装情况,启动服务
[root@www ~]# systemctl start httpd #开启服务
[root@www htdocs]# apachectl -t #验证配置文件的配置是否正确
Syntax OK
[root@www htdocs]# apachectl -t -D DUMP_ MODULES | grep "deflate" #检查是否安装并配置好deflate模块,这是配置好的
Usage: /usr/local/httpd/bin/httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t -D DUMP_INCLUDES: show all included configuration files
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)
5、编辑验证的index.html文件
1、内容太少不会进行压缩,所以我们加2张图片进去
[root@www htdocs]# pwd #目录地址
/usr/local/httpd/htdocs
[root@www htdocs]# ls #向目录里面添加图片,直接从电脑里面拖进去就行
game.jpg index.html
[root@www htdocs]# vim index.html
<html><body><h1>It works!
hello yes
</h1>
<img src="game.jpg"/>
<img src="game.jpg"/>
</body></html>
6、浏览器验证
1、添加域名解析
[root@www ~]# echo '192.168.100.6 www.hello.com' >> /etc/hosts
2、浏览器验证,(建议用火狐浏览器,之前进过这个域名或IP,把缓存清除再进)
鼠标右键查看元素
三、网页缓存
1、配置网页的缓存时间
1、通过mod_ expire模块配置Apache ,使网页能在客户端浏览器缓存一段时间,以避免重复请求
2、启用mod_ expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
2、配置expires过程
apachectl -t -D DUMP_ MODULES | grep "expires" #查看是否已有expires模块,没有则什么都不显示
systemctl stop httpd. service # 停止httpd服务,因为要重新编译
cd /usr/1local/httpd/ conf
mv httpd. conf httpd . conf . bak1 #进入配置文件所在目录进行备份
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel # 安装Apache环境
cd /opt/httpd-2.4.29/ #切入到脚本所在目录
. /configure \ #执行脚本
--prefix=/usr/loca1/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
-- enable-expires #加入mod_ _deflate 模块
make && make install #编译和安装
3、配置mod_ expires 模块启用
vim /usr/1ocal/httpd/conf/httpd.conf #进入并修改配置文件
Listen 192. 198.100.6:80 #--修改监听端口,
LoadModule expires_module modules/mod_expires.so #取消注释(配置成功才会有这一行,expires模块)开启mod_ _expires 模块
ServerName Www.hello. com: 80 #服务域名,
<IfModule mod_ expires.c> #里面有模板可复制一个再编辑
ExpiresActive On #开启功能
ExpiresDefault "access plus 500 seconds" #设置缓存时间
</ I fModule>
4、检查安装情况,启动服务
[root@www ~]# systemctl start httpd #开启服务
[root@www htdocs]# apachectl -t #验证配置文件的配置是否正确
Syntax OK
[root@www htdocs]# apachectl -t -D DUMP_ MODULES | grep "expires" #检查是否安装并配置好deflate模块,这是配置好的
expires_module (shared)
5、浏览器验证
1、浏览器验证,(建议用火狐浏览器,之前进过这个域名或IP,把缓存清除再进)
可以看到expires模块和缓存时间
四、隐藏版本信息
1、Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
2、生产环境中要配置 Apache隐藏版本信息
1、隐藏版本信息配置过程
1、进入配置文件
vim /usr/ local/httpd/ conf /httpd. conf
Include conf/extra/httpd-default. conf #大概491行--取消注释,然后保存退出
vim /usr/ local/httpd/ conf/extra/httpd-default. conf
ServerTokens Firod #将原本的Full 改为Prod, 只显示名称,没有版本
#ServerTokens表示Server 回送给客户端的响应头域是否包含关于服务器OS类型和编译过的模块描述信息。
2、重启服务
systemctl restart httpd. service
浏览器访问http://192.168.100.6 ,双击200消息查看Server项
改之前:可以看到版本信息
改之后:版本信息被隐藏
五、Apache防盗链
1、概述
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源,
如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
2、盗链
我们在另一台linux服务器上配置
这里的图片地址为你要盗的图片地址
添加域名解析
[root@localhost html]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.101 www.yyy.com
192.168.100.6 www.hello.com
效果:
别人的网站:
你的网站:
3、防盗
1、检查是否安装mod_rewrite模块
apachectl -t -D DUMP_MODULES | grep "rewrite"
2、安装mod_rewrite模块
systemctl stop httpd.service #停止httpd服务
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak6 #备份
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-rewrite #添加mod_rewrite 模块
make && make install #编译安装
3、配置mod_rewrite
vim /usr/local/httpd/conf/httpd.conf
-----157行-----
LoadModule rewrite_module modules/mod_rewrite.so
-----224行-----
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks #默认开启
AllowOverride None #默认开启
Require all granted #默认开启
RewriteEngine On #打开 rewrite 功能,加入 mode_rewrite 模块内容
RewriteCond %{HTTP_REFERER} !^http://gxd.com/.*$ [NC] #设置匹配规则
RewriteCond %{HTTP_REFERER} !^http://gxd.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.gxd.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.gxd.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf|png)$ http://www.gxd.com/error.png #设置跳转动作
apachectl -t #验证配置文件的配置是否正确
Syntax OK
apachectl -t -D DUMP_MODULES | grep "rewrite" #检查 mod_rewrite 模块是否已安装
rewrite_module (shared) #已安装的正确结果
systemctl restart httpd.service
4、测试防盗链(另一台虚拟机)
成功了