CentOS 7中Apache的优化与配置

现在的Web网站会由很多的图片、脚本、css以及flash等这些元素嵌入到页面中,如果不设置缓存或者缓存设置不当,会导致客户端向Web服务器访问时都会重新下载一次这些内容,浪费了很多带宽。通过Apache的mod_expires缓存模块来设置ExpiresHeader来缓存这些文件。expires模块通过Header报文来指定特定类型的文件在浏览器中的缓存时间,比如像图片、flash等这些在发布后不需要经常做修改的内容。因此做了缓存之后,浏览器从web服务器上下载第一次之后,就不需要重新再次下载这些文件了,而是直接从浏览器的缓存中读取了。通过这样的设置能够让客户端的访问速度加快,同时也节省了很多带宽。

安装方法:编译时configure后面加--enable-expires即可,如果在编译安装时没有安装该模块,可以参考本文下面的开启deflate压缩模块,单独编译模块的方法。 

/usr/local/apache/bin/apxs -c -i -a /usr/local/src/httpd-2.4.33/modules/filters/mod_expires.c

vi /usr/local/apache/conf/httpd.conf,找到并开启

LoadModule expires_module modules/mod_expires.so

缓存的方法有三种,分别是对目录,对全局,对虚拟主机

<ifmodule mod_expires.c>

ExpiresActive on

ExpiresDefault "access plus 12 month"

ExpiresByType text/html "access 12 month"

ExpiresByType text/css" access 12 month"

ExpiresByType image/gif" access 12 month"

ExpiresByType image/jpeg" access 12 month"

ExpiresByType image/jpg "access 12 month"

ExpiresByType image/png "access 12 month"

ExpiresByType application/x-shockwave-flash "access 12 month"

ExpiresByType application/x-Javascript "access 12 month"

ExpiresByType video/x-flv "access 12 month"

</ifmodule>

全局缓存:直接在httpd.conf中配置以上内容

目录缓存:在httpd.conf中,找到你的网站目录位置中添加以上内容

<Directory '/usr/local/apache/htdocs'>

#上面配置

</Directory>

虚拟主机:

#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host2.example.com
#    DocumentRoot "/usr/local/apache/htdocs"
#    ServerName 127.0.0.1:80
#    ErrorLog "logs/dummy-host2.example.com-error.log"
#    CustomLog "logs/dummy-host2.example.com-access.log" common

#    在这里加入上面的配置

#</VirtualHost>

expires模块语法:

expires模块用到了ExpiresDefault和ExpiresByType两个指令,以下是这两个指令的语法:

ExpiresDefault "<base>[plus]{<num><type>}*"

ExpiresByType type/encoding '<base>[plus]{<num><type>}'

其中,base的参数有三个:access,now(等价于'access'),modification

plus关键字是可选的

<num>必须是整数,确保可以atoi()所接收,(atoi可以把字符串转换成长整型数)

<type>参数类型:years,months,weeks,days,hours,minutes,seconds

使用缓存的好处:

1.缩短服务响应时间,

2.减少服务器负载,

3.减少所需的网络带宽量,降低成本。

缓存的缺点:由于使用了缓存,导致被缓存的内容有更新时,客户端看到的还是旧的

解决方案:

1.根据业务内容和需求,缩短缓存的时间

2.修改缓存文件的命名

隐藏版本号

用curl -I 域名 ,会发现如果没有设置隐藏版本号的话,服务器版本及Openssl信息会全都显示出来,这样容易暴露web服务器版本,进而通过版本号查找漏洞入侵web服务器。

例如:

HTTP/1.1 302 Found
Date: Wed, 11 Apr 2018 08:03:25 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.6.32
X-Powered-By: PHP/5.6.32
Set-Cookie: PHPSESSID=slukigut3n2fkuii73r4tse9k1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: /Home/Login/index.html
Content-Type: text/html; charset=UTF-8

以上信息暴露了apache的版本号以及openssl的版本号,按照下面的方法来隐藏Apache的版本号。

源码编译的Apache,以/usr/local/apache为主目录

1. vim /usr/local/apache/conf/httpd.conf                                                                ### 编辑httpd.conf文件 

找到  Include conf/extra/httpd-default.conf,去掉前面的#号,使其生效,wq保存

2. vim /usr/local/apache/conf/extra/httpd-default.conf

找到ServerTokens选项,将其Full值改为Prod                                                                ### full值为显示版本号以及其它详细信息,Prod为隐藏这些信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/36ec44e04bab0a529dc9f495d556f48a.html