昨天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. 深入理解C指针之三:指针和函数

    原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回 ...

  2. Cocos2d-xvision3.0加载失败,和,Vs2012环境搭建

    1.安装好VS2012,下载Cocos2d-x3.0 双击击win32 sln运行VS2012 如果加载失败点击程序运行,输入devenv.exe /resetuserdata 回车,然后再进入VS, ...

  3. ASP.NET vNext (一)- 基本概念和环境配置

    ASP.NET vNext (一)- 基本概念和环境配置 转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 编者语:时代在变,在csdn开博一年就发了那么的两篇文章,无论是什么原因都觉得有愧了.但 ...

  4. 用Iconv应对NodeJs对称加密技术在汉字编码与NoSQL的一些坑洞

    ·起因 汉字编码技术在实际应用中总是会存在这样或者那样的问题,尤其是在一些热门NoSQL方面多少会遇到挑战.比方说Cassandra字符集还不直接支持GB2312,要想存储写汉字那可真是麻烦.当然这还 ...

  5. Introducing Visual Studio’s Emulator for Android

    visual studio 2015支持Android开发了. Microsoft released Visual Studio 2015 Preview this week and with it ...

  6. UITableView的常用方法

    一.UITableView的代理方法 #pragma mark 每一行的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtI ...

  7. 苹果浏览器Safari对JS函数库中newDate()函数中的参数的解析中不支持形如“2020-01-01”形式

    苹果浏览器safari对new Date('1937-01-01')不支持,用.replace(/-/g, "/")函数替换掉中划线即可 如果不做处理,会报错:invalid da ...

  8. c语言mysql api

    原文:c语言mysql api 1.mysql_affected_rows()            //返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. 2.mysql_ ...

  9. windows下 composer常见问题及处理

    错误一: Warning: This development build of composer is over 30 days old. It is recommend ed to update i ...

  10. CSS学习笔记:溢出文本省略(text-overflow)

    原文:CSS学习笔记:溢出文本省略(text-overflow) 在CSS3中,text-overflow属性的基本语法如下: clip:表示不显示省略文本,简单的裁切. ellipsis:表示对象文 ...