在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端游览器。
mod_gzip模块与mod_deflate模块
Apache 1.x:没有内建网页压缩技术,但可使用第三方模块mod_gzip执行压缩
Apache 2.x:在开发的时候内建了mod_deflate这个模块,取代mod_gzip
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar xzvf apr-1.6.2.tar.gz
[root@localhost opt]# tar xzvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xjvf httpd-2.4.29.tar.bz2
[root@localhost opt]# ls
apr-1.6.2 apr-1.6.2.tar.gz apr-util-1.6.0 apr-util-1.6.0.tar.gz httpd-2.4.29 httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
yum install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel -y
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ #指定安装路径
> --enable-so \ #开启核心功能
> --enable-rewrite \ #开启重写模块,便于设置防盗链
> --enable-charset-lite \ #指定字符集
> --enable-cgi \ #开启通用网关接口协议
> --enable-expires \ #开启压缩功能
> --enable-deflate #开启网页缓存功能
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf #建立主配置文件的软链接,方便后期修改
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #把可执行命令添加到命令的搜索路径中
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #把httpd服务交给service管理
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
LoadModule deflate_module modules/mod_deflate.so #开启deflate压缩模块
Listen 192.168.209.134:80 #开启ipv4监听
#Listen 80 #关闭ipv6监听
ServerName www.kgc.com:80 #设置域名
#在末尾加入以下字段
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
[root@localhost httpd-2.4.29]# apachectl -t #验证语法是否正确
Syntax OK
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# rz -E #用xshell连接,可直接拖进来
rz waiting to receive.
[root@localhost htdocs]# ls
animal.jpg index.html
[root@localhost htdocs]# vim index.html
It works!
[root@localhost htdocs]# iptables -F
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# service httpd start
通过mod_expire模块配置Apache,使网页能在客户端游览器缓存一段时间,以避免重复请求
使用mod_expire模块后,会自动生成页面头部信息中的Expire标签和Cache-Crontrol标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
在前面的编译安装中已经加入了mod_expire模块
LoadModule expires_module modules/mod_expires.so #开启此模块
#在末尾加入以下字段
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
[root@localhost htdocs]# apachectl -t
Syntax OK
[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
[root@localhost htdocs]# service httpd restart
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源。
如果别人盗用网站的这些静态资源,明显会增加服务器的带宽压力。
作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
主机信息 | 主机功能 |
---|---|
server1(192.168.209.134)www.kgc.com | 被盗链服务器 |
server2(192.168.209.142)www.benet.com | 盗链服务器 |
客户端 window | 访问验证 |
安装bind软件包,对www.kgc.com、www.benet.com进行域名解析,此处不再介绍,可观看之前的DNS域名解析的博客
yum安装httpd软件包,修改配置文件的监听地址和域名
写一个首页文件
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
this is daolian web!
#图片地址为server1站点中的连接地址
#指定DNS服务器用来解析域名
[root@server2 html]# echo "nameserver 192.168.209.134" > /etc/resolv.conf
之后重启http服务
打开客户端,选定DNS服务器的地址192.168.209.134
访问被盗链服务器和盗链服务器
可以看到盗链服务器网站中并没有放入图片,成功盗用了其他网站的图片
注意:Apache在编译安装时需要安装rewrite模块,如果没有,需要重新编译安装,前面已经安装,不再描述
配置规则变量说明:
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf
#开启重写模块
LoadModule rewrite_module modules/mod_rewrite.so
#在站点目录标签里加入
249 RewriteEngine On
250 RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
251 RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
252 RewriteCond %{HTTP_REFERER} !^http://WWW.kgc.com/.*$ [NC]
253 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com$ [NC]
254 RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png
# 把错误图片上传到站点目录
[root@server1 htdocs]# ls
animal.jpg index.html
[root@server1 htdocs]# rz -E
rz waiting to receive.
[root@server1 htdocs]# ls
animal.jpg error.png index.html
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf
496 Include conf/extra/httpd-default.conf #开启
[root@server1 htdocs]# cd /usr/local/httpd/conf/extra/
[root@server1 extra]# ls
httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-html.conf
[root@server1 extra]# vim httpd-default.conf
55 ServerTokens Prod #把Full改为Prod