昨天j.L问我http cache怎么设置,当时脑子有点糊涂,一时没想到其实他问的就是反向代理如何设置。

首发:PHP CUP xiaobao

什么是反向代理?

向代理就是代理服务器(如ISA、Squid)的一种特殊功能,这个功能可以加快客户访问您WEB服务器的速度。是否有正向代理?是的,正向代理它也可加
快用户访问WEB服务器的速度。两者有何区别?这样理解,使用代理服务器的正向代理功能,代理的是您内网用户访问因特网上的任何WEB服务器,而使用代理
服务器的反向代理功能,则是代理来自因特网上的任何客户访问您内网的WEB服务器。

快马加鞭的原理是什么?
可能您的身边围满了跑
保险、银行卡、化妆品推销的人,这些人就是企业的代理人,您无需跑到银行就可以办理银行卡,因为银行代理人缓存了银行需要您填写的一些单据,其实这就是正
向代理的过程。反过来,其实您也在卖自己的手编毛衣,那么上述那些人同样可以作为您的代理人,当有公众需要时,无须直接和您联系,因为代理事先缓存了您要
卖的毛衣,这个业务对于代理人来说就是反向代理过程。那么反向代理是如何加速您卖毛衣服务的呢?

图中,三个反向代理服务
器就是刚才提到的跑保险、银行卡、化妆品推销人,防火墙内部的服务器就是您。您事先把编织好的毛衣分发给这3个人,这样,他们就分担了您一个人繁忙的卖毛
衣服务。反映到现实,我们可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时
更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,大部分来自客户的请求直接在缓存服务器被返回了,从而减轻了对内容服务器的请求
数。

特别注意:新请求和CGI请求必须一路直达内容服务器,其余的请求可以由代理服务器直接进行处理。显而易见,一个新请求必须先到达内
容服务器,否则缓存哪来的内容呢?一个CGI请求就是对动态变化页面的请求,比如您正在看的这篇文章页就随时可能因用会的回帖而改变,反向代理一般不缓存
这种请求的内容页。

如何配置反向代理?
一般提供缓存功能的代理服务器软件都可以配置反向代理功能,比如微软的ISA,或者Linux下的Squid,本文仅以Squid为例,两者原理一样。

使用squid配置反向代理,主要就是squid.conf配置文件。如果使用系统自带的Squid软件包,配置文件在/etc/squid/目录下。

1、单台Squid反向代理服务器<==>单个WEB服务器

vi /etc/squid/squid.conf

http_port 80
httpd_accel_host 172.10.1.1
httpd_accel_port 80
httpd_accel_single_host on
httpd_accel_with_proxy on

指令作用:

http_port,指定Squid监听HTTP请求的端口,一般设置为80端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。比如用户不需要在浏览器里敲入http://www.phpcup.cn:8080,像以前一样直接输入http://www.phpcup.cn便可以了。

httpd_accel_host,指定WEB服务器的监听端口。

httpd_accel_host,指定WEB服务器的IP地址。

httpd_accel_single_host,
指令httpd_accel_single_host为on时,Squid被设置为仅对单一的web服务器作反向代理。就是说,一个反向代理服务器不仅可
以为单台WEB原内容服务器提供服务,也可同时为多台服务。当Squid为多台WEB服务器提供反向代理时,此命令设置为off。

httpd_accel_with_proxy,若希望Squid既作反向代理服务器又作本地机器的上网的正向代理服务器,则需将此命令设置为on。

2、多台Squid反向代理服务器<==>单个WEB服务器
Squid反向代理的配置如(1)所述一样,现在您需要做的是把目光转向DNS服务器的配置。我们知道,用户在浏览器中输入的是主机名,而非IP地址,但计算机网络设备必须知道IP地址才可以通信,这就需要一台DNS服务器实现主机名到IP地址的转换,更详细的工作原理可访问PHP CUP。

现在我们要做的是在DNS服务器上实现对多台Squid反向代理服务器的轮询。所谓轮询,就是当第一个用户请求phpcup.cn的IP地址时,返回的是123.123.123.1,下一个则返回123.123.123.2,再下一个来自用户的请求返回的是123.123.123.3,这样,3台Squid服务器的公网IP被DNS服务器轮番展示给用户。无论使用何种DNS服务器软件来配,其数据库都是这样的:
www.phpcup.cn.    IN  A  123.123.123.1
www.phpcup.cn.    IN  A  123.123.123.2
www.phpcup.cn.    IN  A  123.123.123.3
可见,一个主机名的A资源记录对应了多台Squid反向代理服务器的地址,实现了轮询效果。

特别注意:对于DNS服务器,您可以通过设置轮询的方式,来解决压力不均问题。以BIND 9.X为例,修改其配置文件named.conf

options {
    rrset-order { order cyclic; };
};

rrset-order命令有三个可选参数:random、fixed、cyclic 
random,随机返回A记录的IP地址
fix,将多个A记录按配置文件的顺序固定给出
cyclic,循环返回A记录的IP地址

我们需要的正是cyclic,round-robin(轮询)方式, 以1->2->3->1->2…这样的方式应答用户的请求。

重新启动BIND服务 /etc/init.d/named reload

使用dig www.phpcup.cn 跟踪DNS服务器的轮询配置是否生效。

反向代理-- WEB服务的加速器[转]的更多相关文章

  1. nignx反向代理web服务器的配置与使用

    一.为什么要用nignx反向代理 1.负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃.为了避免服务器崩溃,让用户有更好的体验,我们通过负载均 ...

  2. 利用Nginx实现反向代理web服务器

    一.Nginx简介 Nginx是一个很强大的高性能Web服务器和反向代理服务器,它具有很多非常优越的特性: 可以高并发连接 内存消耗少 成本低廉 配置文件非常简单 支持Rewrite重写 内置的健康检 ...

  3. nginx 反向代理 apache 服务

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

  4. Nginx基础 - 配置代理web服务

    1.反向代理及负载均衡Nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求代理转发至一组upstream虚拟服务池. 1)upstream配置语法 Syntax: upstr ...

  5. 【Linux】【Services】【SaaS】Docker+kubernetes(10. 利用反向代理实现服务高可用)

    1. 简介 1.1. 由于K8S并没有自己的集群,所以需要借助其他软件来实现,公司的生产环境使用的是Nginx,想要支持TCP转发要额外安装模块,测试环境中我就使用HAPROXY了 1.2. 由于是做 ...

  6. .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

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

  7. 循序渐进nginx(二):反向代理、负载均衡、缓存服务、静态资源访问

    目录 反向代理 使用 1.创建代理目标服务端: 2.配置nginx反向代理目标服务端: 3.测试使用: 负载均衡 使用 1.准备服务端 2.修改nginx配置 3.测试 负载均衡策略 负载均衡的额外参 ...

  8. webRTC脱坑笔记(四)— windows下Nginx对Node服务的反向代理

    Nginx反向代理 1.什么是反向代理 当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问 ...

  9. 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理

    导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...

随机推荐

  1. JS里写入(混写)php asp

    原文:JS里写入(混写)php asp JS里写入(混写)php 方法1:<Br> <script language="javascript"> docum ...

  2. Linux环境编程相关的文章

    Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制 ...

  3. 关于jquery mobile 页面闪烁与抖动问题

    1.闪烁:在用a链接跳转到另一个页面的时候,页面总会抖动几下,其实就是页面切换时的transition特效,jqm貌似默认了这项. 解决方案:在a链接添加transition:none; 属性就可以啦 ...

  4. java中HashSet详解

    HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSe ...

  5. C++ Primer 学习笔记_63_重载运算符和转换 --转换和类类型【上】

    重载运算符和转换 --转换与类类型[上] 引言: 在前面我们提到过:能够用一个实參调用的位 unsignedchar 相同范围的值,即:0到255. 这个类能够捕获下溢和上溢错误,因此使用起来比内置u ...

  6. Linux下使用cat制作“内涵图”

    http://blog.csdn.net/odaynot/article/details/7939869

  7. 大批量烧写openwrt系统

    http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd OEM mass flashing Flashing hundreds of devices using ...

  8. Oracleclient+PLSQL Developer实现远程登录Oracle数据库

    Oracle数据库功能强大.性能卓越,在造就这些长处的同一时候,也导致Oracle占内存比較多.针对这个问题,我们怎样做到取其精华去其糟粕呢? 解决方式:我们能够在局域网内的server上安装庞大的O ...

  9. 负载均衡DNS和反向代理优缺点

    负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡(又 ...

  10. Extjs 组件继承 模板说明(同GridPanel案件)

    1. 重写initComponent()方法,并在该方法在调用父类的initComponent()方法.  如:subclass.superclass.initComponent.call(this) ...