Linux服务器开启Gzip压缩和Url重写功能

Apache的Gzip压缩功能可以将Http请求的网页文件等压缩后再传送,之后浏览器会将收到的压缩文件解压和解析,最近搭建服务器时发现网站访问速度太慢,果断开启之,开启之后对网站访问速度的提升还是很明显的,这里需要同时开启ApacheUrl重写功能,所以此文记下

目录导航

  1. Apache开启Gzip压缩功能
  2. 开启Apache的Url地址重写

开启Gzip压缩

Apache压缩有两种模块,mod_gzip和mod_deflate,两者压缩技术都是Gzip,前者压缩比高,但是占用资源也高,后者是Apache 2.x系列之后的内建模块,相反占用资源少,压缩比也较低。现在较新的浏览器都支持两种压缩方式。 查看浏览器是否支持可以通过查看HTTP请求头: Accept-Encoding: gzip,deflate 该字段表示浏览器同时支持的压缩方式

首先查看Apache是否加载了deflate_module模块

#httpd -M|grep deflate

出现了

deflate_module (shared)

表明已加载该模块,一般通过yum或者apt-get默认安装都会自动加载模块,如果没有出现以上结果则表示模块未加载,需要按如下步骤修改配置文件:

  1. 修改httpd.conf配置文件,默认安装的话该文件应该在 /etc/httpd/conf/httpd.conf
    使用vi或者其他编辑器编辑该文件,需要root权限,找到#LoadModule deflate_module modules/mod_deflate.so将前面的#去掉。

     #vi /etc/httpd/conf/httpd.conf
    

    vi命令模式下输入/mod_deflate回车,/后面加单词是vi的单词查找功能,敲下键盘上的a,进入vi编辑模式,在查找到的高亮行前面去掉#,然后按Esc退出编辑模式,输入:wq保存退出(:q是直接退出不保存,:q!是强制退出)。

  2. 如果没有找到#LoadModule deflate_module modules/mod_deflate.so,则查看文件中是否有
    Include conf.modules.d/*.conf
    有就到httpd.conf文件父目录中的conf.module.d中编辑*-base.conf文件,我这里是/etc/httpd/conf.modules.d/00-base.conf,找到
    #LoadModule deflate_module modules/mod_deflate.so
    将前面的#去掉,总之就是要让以上这句配置语句生效。

  3. 同理查找#LoadModule headers_module modules/mod_headers.so去掉前面的#,此模块配置HTTP头中文件的缓存时间

  4. 编辑网站目录中.htaccess文件,没有则新建,此步骤前提是开启了Url重写功能,开启方法在第二部分内容

     #vi /var/www/html/.htaccess
    

    按a进入插入模式,光标移动到文档最后添加如下规则:

     #配置压缩规则
     <ifmodule mod_deflate.c>
     #设置MIME类型内容的压缩规则
     SetOutputFilter DEFLATE
     SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|exe|t?gz|zip|bz2|sit|rar|pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #设置不需要压缩的文件
     AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript #设置需要压缩的文件
     </ifmodule>
    
  5. 接下来在设置缓存时间,文档最后添加如下规则:

     <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css)$">
     Header set Cache-Control "max-age=2592000"  #文件缓存时间配置
     </FilesMatch>
    
  6. 按Esc退出vi编辑模式,输入:wq保存退出收工!可以使用httpd -M查看是否正确加载模块。

开启Url地址重写

Url重写功能主要是.htaccess文件实现,.htaccess文件在网站根目录下,其中制定的规则可以实现网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。其实我主要是用来实现动态网页的伪静态功能,原理就是在.htaccess中配置规则,当用户请求.html静态网页文件时,重定向到.php动态网页文件。

  1. 先验证模块是否加载

     #httpd -M|grep write
    

    结果如下表明加载成功,直接跳到第二步

     rewrite_module (shared)
    

    如果没有如上结果,表明模块尚未加载。需要同上一样是配置httpd.conf文件,具体操作参考第一部分操作,目的就是找到#LoadModule rewrite_module modules/mod_rewrite.so去掉前面的#

  2. 查找httpd.conf里的AllowOverride None,改成AllowOverride All,使用vi的/加单词来查找修改更快一点,比如我的是:

     <Directory "/home/www/html">
         AllowOverride None
         # Allow open access:
         Require all granted
     </Directory>
    

    改为:

     <Directory "/home/www/html">
         AllowOverride All
         # Allow open access:
         Require all granted
     </Directory>
    

    注意如果使用VirtualHost设置过多个域名映射到目录的话,需要修改virtualHost文件中的AllowOverride,比如我的:

     <VirtualHost *:80>
         DocumentRoot "/home/www/html"
         ServerName jim0.com
         ServerAlias *.jim0.com
         DirectoryIndex index.html news.html index.htm index.php
         <Directory "/home/www/html">
             Options FollowSymLinks
             AllowOverride All   #修改None为All
             Order allow,deny
             Allow from all
         </Directory>
     </VirtualHost>
    

    httpd.conf文件中每条语句都会有英文配置说明的,其实还是很简单很详细的,不懂的话可以看看

  3. 判断.htaccess文件是否生效:随便在.htaccess文件中敲一些服务器看不懂的字符和语句,再访问网站出现500错误,表示.htaccess文件生效,可以在.htaccess添加规则了,好了收工!

标签: gzip, linux, apache, 服务器

添加新评论