? 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
? 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
配置网页压缩功能
配置网页缓存
工作模式的选择与参数优化
配置隐藏版本号
配置防盗链
……
? 降低了网络传输的字节数,加快网页加载的速度
? 节省流量,改善用户的浏览体验
? gzip与搜索引擎的抓取工具有着更好的关系
? mod_ gzip 模块
? mod_ deflate 模块
没有内建网页压缩技术,但可使用第三方mod_ gzip 模块执行压缩
在开发的时候,内建了mod_ deflate 这个模块,取代mod_gzip
? 两者均使用gzip压缩算法,运作原理类似
? mod_ deflate压缩速度略快, 而mod_ gzip的压缩比略高
? mod_ gzip对服务器CPU的占用要高一-些
? 高流量的服务器,使用mod_ deflate可能会比mod gzip加载速度更快
通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
启用mod_expire模块后, 会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源
如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
apachectl -t -D DUMP_MODULES | grep "deflate"
systemctl stop httpd.service cd /usr/local/httpd/conf mv httpd.conf httpd.conf.bak 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 #加入mod deflate 模块 make && make install
vim /usr/local/httpd/conf/httpd.conf --51行--修改 注释52行 Listen 192.198.80.10:80 # Listen 80 --105行--取消注释 LoadModule deflate module modules/mod deflate.so #开启mod deflate 模块 --197行--取消注释,修改 ServerName www . clj. com: 80 --末行添加-- <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png #代表对什么样的内容启用gzip压缩 DeflateCompressionLevel 9 #代表压缩级别,范围为1~9 SetOutputFilter DEFLATE #代表启用deflate 模块对本站点的输出进行gzip压缩 </IfModule>
apachect1 -t #验证配置文件的配置是否正确 apachectl_-t -D DUMP_ MODULES l grep "deflate" #检查 mod deflate 模块是否已安装 deflate module (shared) #已安装的正确结果 systemctl start httpd.service
cd /usr/local/httpd/htdocs 先将game.jpg文件传到/usr/local/httpd/htdocs目录下 vim index.html <html><body> <hl>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works !</h1> <img src="game. jpg"/></body></html>
[root@cm ~]# apachectl -t -D DUMP_MODULES |grep "deflate"
[root@cm ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) [root@cm ~]# cd /usr/local/httpd/conf/ [root@cm conf]# ls extra httpd.conf httpd.conf.bak magic mime.types original [root@cm conf]# mv httpd.conf httpd.conf.bak1 [root@cm conf]# ls extra httpd.conf.bak httpd.conf.bak1 magic mime.types original [root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本 软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本
mod_deflate
模块[root@cm conf]# cd /opt/httpd-2.4.29/ [root@cm httpd-2.4.29]# ls ABOUT_APACHE build CMakeLists.txt configure.in httpd.mak libhttpd.dep Makefile.win NWGNUmakefile server acinclude.m4 BuildAll.dsp config.layout docs httpd.spec libhttpd.dsp modules os srclib Apache-apr2.dsw BuildBin.dsp config.log emacs-style include libhttpd.mak modules.c README support Apache.dsw buildconf config.nice httpd INSTALL LICENSE modules.lo README.cmake test apache_probes.d buildmark.o config.status httpd.dep InstallBin.dsp Makefile modules.o README.platforms VERSIONING ap.d CHANGES configure httpd.dsp LAYOUT Makefile.in NOTICE ROADMAP [root@cm httpd-2.4.29]# [root@cm httpd-2.4.29]# ./configure > --prefix=/usr/local/httpd > --enable-so > --enable-rewrite > --enable-charset-lite > --enable-cgi > --enable-deflate
[root@cm httpd-2.4.29]# make -j2 && make install
[root@cm ~]# apachectl -t Syntax OK [root@cm ~]# apachectl -t -D DUMP_MODULES |grep "deflate" deflate_module (shared) [root@cm ~]# systemctl restart httpd.service
[root@cm ~]# cd /usr/local/httpd/htdocs/ [root@cm htdocs]# ls index.html meme.jpg [root@cm htdocs]# vim index.html <html><body><h1> It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! It works! </h1> <img src = "meme.jpg"/> </body></html>
[root@cm htdocs]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.229.60 www.ly.com 192.168.229.60 www.weq.com
通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求。
启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
apachectl -t -D DUMP_MODULES | grep "expires"
systemctl stop httpd.service cd /usr/local/httpd/conf mv httpd.conf httpd.conf.bak1 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-expires #加入mod_ expires 模块 make && make install
vim /usr/local/httpd/conf/httpd.conf #修改配置文件
----52行修改-----
Listen 192.168.80.77:80
----111行取消注释----
LoadModule expires_module modules/mod_expires.so
----199行取消注释并修改-----
ServerName www.clj.com:80
----末行添加-----
<IfModule mod_expires.c>
ExpiresActive On #打开网页缓存功能
ExpiresDefault "access plus 60 seconds" #设置缓存60秒
</IfModule>
apachectl -t #验证配置文件的配置是否正确 apachectl -t -D DUMP_MODULES | grep "expires" #检查mod_ deflate模块是否已安装 deflate_module (shared) #已安装的正确结果 systemctl start httpd.service
cat /usr/local/httpd/htdocs/index.html 方法一-: 在Linux系统中,打开火狐浏览器,右击点查看元素 选择网络--->选择HTML、WS、其他 访问http://192.168.80.10,双击200消息查看响应头中包含Expires项 方法二: 在Windows系统中依次安装Microsoft. NET4和fiddler 软件,打开fiddler 软件 选择inspectors --->选择Headers 浏览器访问http://192.168.229.60 ,双击200消息查看Expires 项
[root@cm ~]# apachectl -t -D DUMP_MODULES | grep "expires"
[root@cm ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) [root@cm ~]# cd /usr/local/httpd/conf/ [root@cm conf]# ls extra httpd.conf httpd.conf.bak httpd.conf.bak1 magic mime.types original [root@cm conf]# mv httpd.conf httpd.conf.bak2 [root@cm conf]# ls extra httpd.conf.bak httpd.conf.bak1 httpd.conf.bak2 magic mime.types original [root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel 已加载插件:fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本 软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本 软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本 无须任何处理
[root@cm ~]# cd /opt/httpd-2.4.29/ [root@cm httpd-2.4.29]# cd /opt/httpd-2.4.29/ [root@cm httpd-2.4.29]# ./configure > --prefix=/usr/local/httpd > --enable-so > --enable-rewrite > --enable-charset-lite > --enable-cgi > --enable-deflate > --enable-expires
[root@cm httpd-2.4.29]# make -j2 && make install
[root@cm ~]# cd /usr/local/httpd/conf/ [root@cm conf]# ls extra httpd.conf httpd.conf.bak httpd.conf.bak1 httpd.conf.bak2 magic mime.types original [root@cm conf]# vim httpd.conf
[root@cm conf]# apachectl -t Syntax OK [root@cm conf]# apachectl -t -D DUMP_MODULES | grep "deflate" deflate_module (shared) [root@cm conf]# systemctl restart httpd.service
Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患生产环境中要配置Apache隐藏版本信息
vim /usr/local/httpd/conf/httpd.conf #修改此文件,修改内容如下 ------491行--取消注释------ Include conf/extra/httpd-default.conf vim /usr/local/httpd/conf/extra/httpd-default.conf #修改此文件,修改内容如下 ------55行--修改------ ServerTokens Prod #将原本的 Full 改为 Prod,只显示名称,没有版本 #ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息 systemctl restart httpd.service #重新启动服务
隐藏前
隐藏后
隐藏前
隐藏后
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源
如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
apachectl -t -D DUMP_MODULES | grep "rewrite"
systemctl stop httpd.service #停止服务 cd /usr/local/httpd/conf/ #切换目录 mv httpd.conf httpd.conf.bak3 #文件备份 yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel #安装相关程序 cd /opt/httpd-2.4.29/ #切换目录 #添加 mod rewrite模块 ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires --enable-rewrite make -j4 && make install #重新编译安装
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 Rewri teEngine On #打开rewrite功能,加入mode_ rewrite模块内容 RewriteCond %{HTTP_REFERER} !^http://ly.com/。*$ [NC] #设置匹配规则 RewriteCond %{HTTP_REFERER} !^http://ly. com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.ly.com/.*$ [NC] RewriteCond %{HTTP_REFERER} ! ^http://www.ly.com/$ [NC] RewriteRule .*\.(gif | jpg | swf)$ http://www.ly.com/error.png #设置跳转动作 </Directory>
RewriteCond %{HTTP REFERER}!^http;//www.clj.com.s【NC】 的字段含义∶ "%{HTTP
REFERER}"∶ 存放一个链接的 URL,表示从哪个链接访问所需的网页。 "!^∶ 表示不以后面的字符串开头。
"http;//www.clj.com"∶ 是本网站的路径,按整个字符串匹配。 .$"∶ 表示以任意字符结尾。 "【NC】 "∶
表示不区分大小写字母。
RewriteRule ..(gifljpg|swf)$ http;//www.clj.com/error.png的字段含义∶
". "∶表示匹配一个字符。
"“∶ 表示匹配 0 到多个字符,与”.“合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用”+“表示。
“.“∶ 在这里的”“是转义符,”.“就代表符号”.“的意思。因为”.“在指令中是属于规则字符,有相应的含义,如果需要匹配, 需要在前面加个转义符””,其它规则字符如果需要匹配, 也做同样处理。
“(gifljpglswf)“∶ 表示匹配"gif”、“jpg”、“swf"任意一个,”$“表示结束。最后的规则是以”.gif”、”.jpg"、".swf"结尾,前面是1到多个字符的字符串,也就是匹配图片类型的文件。
"http∶/www.clj.com/error,pnq"∶ 表示转发到这个路径 。
Options Indexes FollowSymLinks AllowOverride None Require all granted RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://ly.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://ly.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.ly.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.ly.com/$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://www.ly.com/error.png
cd /usr/local/httpd/htdocs 将1.jpg、2.jpg、3.png文件传到/usr/local/httpd/htdocs目录下 vim index.html <html><body><h1>this is clj.com!</hl> <img src="1.jpg"/> </body></html> echo "192.168.229.60 www.ly.com">> /etc/hosts echo "192.168.229.90 www.weq.com" >>/etc/hosts
yum install -y httpd cd /usr/local/httpd/htdocs #yum安装的httpd服务的默认路径为/var/www/html/ vim index.html <html><body><h1>this is benet.com!</h1> <img src="http;//www.clj.com/1.jpg"/> </body></html> echo "192.168.229.60 www.ly.com">> /etc/hosts echo "192.168.229.90 www.weq.com" >>/etc/hosts
在盗图网站主机上进行浏览器验证 http:www.weq.com 或者192.168.229.90
[root@cm conf]# apachectl -t -D DUMP_MODULES | grep " rewrite"
[root@cm conf]# systemctl stop httpd.service [root@cm conf]# cd /usr/local/httpd/conf [root@cm conf]# ls extra httpd.conf httpd.conf.bak httpd.conf.bak1 httpd.conf.bak2 magic mime.types original [root@cm conf]# mv httpd.conf httpd.conf.bak3 [root@cm conf]# ls extra httpd.conf.bak httpd.conf.bak1 httpd.conf.bak2 httpd.conf.bak3 magic mime.types original [root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本 软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本 软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本 软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本 无须任何处理
[root@cm conf]# cd /opt/httpd-2.4.29/ [root@cm httpd-2.4.29]# ls ABOUT_APACHE build CMakeLists.txt configure.in httpd.mak libhttpd.dep Makefile.win NWGNUmakefile server acinclude.m4 BuildAll.dsp config.layout docs httpd.spec libhttpd.dsp modules os srclib Apache-apr2.dsw BuildBin.dsp config.log emacs-style include libhttpd.mak modules.c README support Apache.dsw buildconf config.nice httpd INSTALL LICENSE modules.lo README.cmake test apache_probes.d buildmark.o config.status httpd.dep InstallBin.dsp Makefile modules.o README.platforms VERSIONING ap.d CHANGES configure httpd.dsp LAYOUT Makefile.in NOTICE ROADMAP [root@cm httpd-2.4.29]# ./configure > --prefix=/usr/local/httpd > --enable-so > --enable-rewrite > --enable-charset-lite > --enable-cgi > --enable-deflate > --enable-expires
[root@cm httpd-2.4.29]# make -j2 && make install
下面内容为正确内容
[root@cm httpd-2.4.29]# cd /usr/local/httpd/htdocs/ [root@cm htdocs]# ls index.html meme.jpg [root@cm htdocs]# rz -E rz waiting to receive. [root@cm htdocs]# ls error.png index.html meme.jpg [root@cm htdocs]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.229.60 www.ly.com 192.168.229.90 www.weq.com
原文:https://www.cnblogs.com/weq0805/p/15119315.html