Apache服务器代理与缓存

1、代理

 正向代理:

           

反向代理: 

 mod_proxy模块

apache实现代理和网关的关键模块。加载mod_proxy模块:LoadModule proxy_module modules/mod_proxy.so

指令:

  • ProxyRequests指令:启用或禁止apache作为正向代理服务器的功能<proxymatch>/<proxy>容器:存放作用于代理服务器的指令,可以控制用户的权限,其中proxymatch支持正则表达式
  • AllowCONNECT指令:指定连接的端口号,需要加载mod_proxy_connect模块,默认apache代理使用443(https)和563(snews)进行连接。NoProxy指令:不使用代理,只在局域网内使用。
  • ProxyBlock指令:屏蔽一些想过滤的网站。
  • ProxyDomain指令:指定一个默认的域,只能作用于局域网。
  • ProxyIOBufferSize指令:用于调整内部缓冲区的大小,有效值需要小于或等于8192.建议使用mod_cache模块来作缓存。
  • ProxyMaxForwards指令:为防DOS攻击,指定允许转发请求的最大代理数目。
  • ProxyPass指令:将一个远程服务器映射到本地服务器中。常用参数:图ProxyPass参数
  • ProxyPassReverse指令:用于重写http重定向应答中的Location、Content-Location、URL,避免http重定向绕过反向代理的问题。
  • ProxyPassReverseCookieDomain和ProxyPassReverseCookiePath指令:分别用于改写域名和改写cookie,用法于ProxyPassReverse类似。
  • ProxyRemote和ProxyRemoteMatch指令:指定此代理使用的远程代理,其中ProxyRemoteMatch可以使用正则表达式。
  • ProxyReceiveBufferSize指令:设置代理服务器的http和ftp连接的缓冲区大小,必须大于512或为0表禁止使用系统缓冲。
  • ProxyTimeout指令:设置用户连接代理服务器时的超时时间。
  • ProxyErrorOverride指令:反向代理设置中为用户提供的错误页面。
  • ProxyBadHeader指令:设置mod_proxy如何处理不合法的应答头。
  • ProxyPreserveHost指令:将用户请求的host行传递给被代理的服务器。
  • ProxyVia指令:控制代理服务器对via头的使用

示例:

ProxyRequests On
ProxyVia  On
<Proxy>
   Order deny,allow
   allow from all
</Proxy>

ProxyPass  /jonse  http://www.jonse.com
ProxyPassReverse  /jonse  http://www.jonse.com

其他代理模块

以下5个辅助代理模块都需要mod_proxy模块的支持:

  • mod_proxy_ajp:提供对apache Jserv Protocal的支持
  • mod_proxy_balancer:提供对负载均衡的支持
  • mod_proxy_connect:提供对http connect方法的支持
  • mod_proxy_ftp:提供对ftp功能的支持
  • mod_proxy_http:提供代理http请求的功能

2、缓存

利用缓存技术可以有效降低服务器负载、提供访问的响应速度。有两种缓存技术分别是基于磁盘和基于内存的.apache提供的缓存模块可以将本地服务器提供的web连接进行缓存,同时为正反向代理提供缓存空间,这些缓存内容以URL的方式进行缓存和索引。apache的三个缓存模块:mod_cache模块提供缓存的全局设置;mod_mem_cache和mod_disk_cache模块分别提供具体的基于内存和基于磁盘的缓存。

mod_cache模块

指令:

  • CacheDefaultExpire:设置缓存资源的有效时间,默认3600s。
  • CacheDisable:设置某个目录或以某个字符串开头的URL不进行缓存。
  • CacheEnable:指定以何种缓存方式(mem、disk、fd)来缓存指定的目录或URL。
  • CacheMaxExpire:缓存文件的最长有效时间。默认是86400s(24H)。
  • CacheIgnoreHeader:不缓存指定的http头部。
  • CacheIgnoreNoLastMod:缓存没有在头中设置LastMod的资源。
  • CacheIgnoreQueryString:在缓存中忽略查询字符串。
  • CacheLastModifiedFactor:用来回应Last Modified资源从而计算出到期时间。
  • CacheStoreNoStore:on和off开关控制Cache-Control中包含no-sotre时是否缓存。
  • CacheStorePrivate:on和off开关控制Cache-Control中包含pricate时是否缓存。

mod_mem_cache模块

基于内存的缓存示例:

指令:

  • MCacheMaxObjectCount:用于设定最大缓存对象的数量。
  • MCacheMaxObjecSize:设定允许缓存的最大文档大小。
  • MCacheMinObjecSize:设定允许缓存的最小文档大小。
  • MCacheRemovalAlgorithm:指定当需要从缓存中移除哪个文档是所使用的算法(LRU或GDSF)。
  • MCacheSize:用于设置缓存使用的最大内存量数量。

mod_disk_cache模块

基于磁盘缓存示例:

     

mod_file_cache模块

提供文件缓存支持。如:

MMapFile /srv/wwww/index.html           --将index.html文件中的内容映射到内存中,提供访问效率
CacheFile /srv/wwww/index.html           --与MMapFile类型,效果不及MMapFile,但内存消耗少

Apache服务器代理与缓存的更多相关文章

  1. HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)

    在网络上,有一些缓存服务器,另外浏览器自身也有缓存功能. 例如: <!DOCTYPE html> <html lang="en"> <head> ...

  2. 使用XAMPP配置Apache服务器反向代理

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  3. 缓存(之一) 使用Apache Httpd实现http缓存

    http://www.tuicool.com/articles/EFfeu2 HTTP性能的问题与方案 一个最终用户访问一个网页,从浏览器发出请求,到接受请求,时间大体上消耗在了以下几个部分: 建立t ...

  4. Nginx + Apache 反向代理

    反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上, ...

  5. 6、nginx的反向代理及缓存功能

    nginx模块的应用 ngx_http_proxy_module  nginx 反向代理模块: http://nginx.org/en/docs/http/ngx_http_proxy_module. ...

  6. Linux实战教学笔记42:squid代理与缓存实践(一)

    第1章 Squid介绍 1.1 缓存服务器介绍 缓存服务器(英文意思cache server),即用来存储(介质为内存及硬盘)用户访问的网页,图片,文件等等信息的专用服务器.这种服务器不仅可以使用户可 ...

  7. 18、Apache服务器

    --   web 服务器   survey.netcraft.net     --此网站会有每月份的世界上网站使用的WEB服务器的使用率统计   www.apache.org     apache a ...

  8. Apache 正向代理与反向代理配置

    Apache提供了 mod_proxy 模块用于提供代理服务,能够支持的包括正向代理.反向代理.透明代理.缓存.负载均衡,HTTP代理.FTP代理.SSL代理等若干强大的功能. 配置代理方法很简单那, ...

  9. squid代理与缓存(上)

    squid代理与缓存(上) 1. Squid介绍 1.1 缓存服务器介绍 缓存服务器(英文意思cache server),即用来存储(介质为内存及硬盘)用户访问的网页,图片,文件等等信息的专用服务器. ...

随机推荐

  1. Java Hour 24 JDBC

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 虽然现在都不会直接写JDBC 了,但是了解毕竟是需要的.当然这个和ADO.Ne ...

  2. 免费电子书:使用VS Online敏捷管理开源项目

    今天推荐的是一本由微软出版社发布的免费电子书,涉及的话题是如何在Visual Studio Online中基于敏捷的思想来管理开源项目. 本书的几位作者(自称ALM领域的游侠),给大家分享了在一个敏捷 ...

  3. Android JNI(转)

    JNI,全称Java Native Interface,是用于让运行在JVM中的Java代码和运行在JVM外的Native代码(主要是C或者C++)沟通的桥梁.代码编写者即可以使用JNI从Java的程 ...

  4. [hive小技巧]同一份数据多种处理

    其实就是from表时,可以插入到多个表. sql语句的模板如下: from history insert overwrite sales select * where actino='purchase ...

  5. 在Windows下利用MinGW编译FFmpeg

    目录 [隐藏]  1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...

  6. WPF/MVVM 快速开始指南(译)(转)

    WPF/MVVM 快速开始指南(译) 本篇文章是Barry Lapthorn创作的,感觉写得很好,翻译一下,做个纪念.由于英文水平实在太烂,所以翻译有错或者译得不好的地方请多指正.另外由于原文是针对W ...

  7. Animator窗口视图Project视图PlayerIdleAnimation和PlayerWalkingAnimation

    Animator窗口视图Project视图PlayerIdleAnimation和PlayerWalkingAnimation 通过上一小节的操作,我们新建了2个动画:PlayerIdleAnimat ...

  8. 数学 赛码 1010 GCD

    题目传送门 /* 数学:官方题解 首先,数组中每个元素至少是1 然后对于任意一个询问Li, Ri, Ansi, 说明Li ~ Ri中的元素必定是Ansi的倍数,那么只需将其与Ansi取最小公倍数即可 ...

  9. stack+DFS ZOJ 1004 Anagrams by Stack

    题目传送门 /* stack 容器的应用: 要求字典序升序输出,所以先搜索入栈的 然后逐个判断是否满足答案,若不满足,回溯继续搜索,输出所有符合的结果 */ #include <cstdio&g ...

  10. 博客搬到blog.csgrandeur.com

    博客已搬到blog.csgrandeur.com. cnblogs停止更新. wordpress太臃肿,难刷. hexo对windows似乎不太友好,迁移的时候建了十几层文件夹,导致目录过深无法移动无 ...