在现网很多企业中,Apache就会部署成默认配置,会引出很多网站问题,但是现在网络十分发达,网络带宽越来越大,需要对Apache进行更一步优化,考虑当今需求,提升Apache的稳定性、安全性和可靠性。
网页压缩
网页缓存
工作模式、参数优化
隐藏版本号
设置防盗链
mod_gzip 模块
mod_deflate 模块
两者均使用 gzip压缩算法,压缩原理类似
mod_deflate速度快,mod_gzip 压缩比高
mod_gzip 占用资源相对较高
对于高并发大流量的服务器,使用 mod_deflate 的多一些
没有自带网页压缩,可以使用第三方 mod_gzip 进行压缩
自带 mod_deflate 模块,取代 mod_gzip
Apache网页优化功能是使用gzip的算法进行对网页内容进行压缩后再传输给客户端浏览器进行解析
这样做可以降低网络传输的字节数,加快网页加载速度,节省流浪,完善用户体验,并且 gzip 与搜索引擎的抓取工具有着更好的关系
安装编译器和其他工具
[root@7CentOS apache]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel
……省略部分……
已安装:
expat-devel.x86_64 0:2.1.0-11.el7 pcre-devel.x86_64 0:8.32-17.el7
zlib-devel.x86_64 0:1.2.7-18.el7
更新完毕:
perl.x86_64 4:5.16.3-295.el7
作为依赖被升级:
expat.x86_64 0:2.1.0-11.el7 perl-libs.x86_64 4:5.16.3-295.el7
完毕!
解压所需依赖
[root@7CentOS apache]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.25.tar.gz
[root@7CentOS apache]# tar zxvf apr-1.6.2.tar.gz
[root@7CentOS apache]# tar zxvf apr-util-1.6.0.tar.gz
[root@7CentOS apache]# tar zxvf httpd-2.4.25.tar.gz
[root@7CentOS apache]# mv apr-1.6.2 httpd-2.4.25/srclib/apr
[root@7CentOS apache]# mv apr-util-1.6.0 httpd-2.4.25/srclib/apr-util
编译安装
[root@7CentOS httpd-2.4.25]# ./configure \
> --prefix=/usr/local/httpd \ ##安装路径
> --enable-so \ ##核心功能模块
> --enable-rewrite \ ##重写功能
> --enable-charset-lite \ ##字符集
> --enable-cgi \ ##通用网关
> --enable-deflate \ ##压缩模块
> --enable-expires ##缓存模块
……省略一堆……
[root@7CentOS httpd-2.4.25]# make && make install
……省略一堆……
[root@7CentOS httpd]# cd /usr/local/httpd/conf/
[root@7CentOS conf]# ls
extra httpd.conf magic mime.types original
[root@7CentOS conf]# vim httpd.conf
下面这行去掉注释
LoadModule deflate_module modules/mod_deflate.so
添加如下行
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascrip text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
修改监听地址
Listen 20.0.0.7:80
#Listen 80
[root@7CentOS conf]# /usr/local/httpd/bin/apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe93:2c0b. Set the 'ServerName' directive globally to suppress this message
Syntax OK
编辑主页
[root@7CentOS conf]# cd /usr/local/httpd/htdocs/
[root@7CentOS htdocs]# ls
index.html
[root@7CentOS htdocs]# vim index.html
This is Ora's CSDN.
[root@7CentOS htdocs]# setenforce 0
[root@7CentOS htdocs]# iptables -
[root@7CentOS htdocs]# /usr/local/httpd/bin/apachectl start
在主页中增加一张图片进行验证
图片要和主页放在同一个文件夹
发现还是可以压缩的
[root@7CentOS htdocs]# vim index.html
This is Ora's CSDN.
之前在上面我编译安装时,已经编译了 enable_expires ,所以不需要再重新编译
[root@7CentOS /]# vim /usr/local/httpd/conf/httpd.conf
去点下面这行,行首 # ,开启模块
LoadModule expires_module modules/mod_expires.so ##开启 缓存 模块
在任意位置手敲一下命令
ExpiresActive On
ExpriesDefault "access plus 60 seconds"
[root@7CentOS /]# ./usr/local/httpd/bin/apachectl start
[root@7CentOS /]# setenforce 0
[root@7CentOS /]# iptables -F
[root@7CentOS /]# vim /usr/local/httpd/conf/httpd.conf
ExpiresActive On
ExpiresDefault "access plus 150 seconds" ##设置为 150 s
[root@7CentOS /]# ./usr/local/httpd/bin/apachectl restart
Apache隐藏版本信息
为什么要隐藏版本信息?
因为Apache的版本信息相对的会透露出Apache的一些漏洞,这样会给网页带来一些安全隐患
所以在现网环境中,需要隐藏 Apahce的版本信息
[root@7CentOS extra]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-default.conf
[root@7CentOS /]# cd /usr/local/httpd/conf/extra/
[root@7CentOS extra]# vim httpd-default.conf
ServerTokens prod ##原本时 Full
ServerSignature Off ##保持不变
[root@7CentOS /]# ./usr/local/httpd/bin/apachectl restart
防盗链是用来阻止别人盗取我们自己网页的文件之类的相关资源的
如果别人盗用我们的网页网站,将数据指向我们的服务,会增大我们服务器的压力
所以我们要设置防盗链
注:防盗链需要开启 rewrite模块
做一个网页,指向 自己服务器的 IP
[root@1centos ora]# vim index.html ##另一台主机的www主页
No ora's web!
[root@1centos ora]# systemctl start httpd
[root@1centos ora]# setenforce 0
[root@1centos ora]# iptables -F
[root@7CentOS htdocs]# ls
½[??c?תa0?? bizhi.jpg error.png FD.jpg index.html
[root@7CentOS htdocs]# vim /usr/local/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so ##防盗
……省略……
RewriteCond %{HTTP_REFERER} !^http://csdn.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://csdn.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.csdn.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.csdn.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.csdn.com/error.png
[root@7CentOS /]# ./usr/local/httpd/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe93:2c0b. Set the 'ServerName' directive globally to suppress this message