反向代理-- WEB服务的加速器[转]

昨天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服务器的轮询配置是否生效。

时间: 2024-10-11 21:36:57

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

nginx反向代理web并使用keepalive做VIP

nginx反向代理:192.168.1.1.192.168.1.2 web服务器      :192.168.1.3.192.168.1.4 这里的nginx是编译安装的,安装在/usr/loacl/下 正常启动nginx服务后进入配置文件(1.1和1.2都要配置) #vim /usr/local/nginx/conf/nginx.conf 在http模块里添加: upstream myCluster { server 192.168.1.3:80; server 192.168.1.4:80;

Nginx反向代理https服务

背景: 最近因工作需要,需在web前端做一个代理,来解决部分用户不能访问的需求:之前通过nginx反向代理已实现对web的代理,但后来发现还有站点为https的,所以又找了些资料,整理了一下,测试完成. 方法: Nginx代理web站点ttxsgoto.com的相关部署和配置主要如下脚本实现: #!/bin/bash path_soft=$(pwd) function base(){ yum -y install  make gcc gcc-c++ autoconf } function ins

centos6.5搭建nginx反向代理Apache服务并实现动静分离

Nginx反向代理配置步骤: 一.规划网络拓扑 二.配置Apache服务器 三.配置nginx服务器 四.进行测试   一.规划网络拓扑 二.配置Apache服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 安装Apache服务 [[email protected] ~]# yum -y install httpd php 注:由于我们的Apache服务器要负责动态页面的处理,所以要安装PHP.   编辑A

Kubernetes用nginx反向代理另外服务

公司利用K8S搭建测试环境,以及存在多套测试换,目前的想法是每一套测试环境使用一个出口IP.方案:1.搭建ingress2.通过搭建一个反向代理 结合实际情况,我们使用搭建一个反向代理解决此问题. 我们环境中存在以下K8S服务vipapi-mall-com #基于.netcorebillapi-mall-com #基于PHPwww-mall-com #基于PHPmobile-mall-com #基于VUE vipapi-mall-com对外的域名就是vipapi.mall.combillapi-

Haproxy代理WEB服务

-----client---------haproxy-------nginx1---------nginx2------ 192.168.1.250 192.168.1.1 192.168.1.10 192.168.1.20 一.安装Nginx [[email protected] ~]# yum -y install pcre-devel zlib-devel [[email protected] ~]# useradd -M -s /sbin/nologin nginx [[email p

十四.nginx,web,反向代理,调用加权轮询算法,nfs服务

一.部署nginx反向代理web服务,调度算法使用加权轮询: 1.首先配置一个nginx服务端,三个web客户端.用vmware 新建虚拟机完成,并用xshell连接 2.在服务端和3个web客户端都下载epel_release 和nginx软件包; yum install epel_release -y ;  yum install nginx -y 3.关闭服务端和web客户端的防火墙,在服务端和web客户端都开启nginx软件包并且查看是否开启; 如未开启重新启动nginx: system

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

1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行. 负载均衡,英文名称为Load

高性能Web服务之varnish应用详解及实战应用

Varnish是一款开源的反向代理软件和HTTP加速器,也称为带缓存反向代理服务,与传统的Squid相比,Varnish具有性能更高.速度更快.管理更方便等诸多优点,很多大型的运营网站都开始尝试使用Varnish来替换Squid,这也是促使Varnish迅速发展起来的原因. Varnish同时也可作为Web缓存服务器,Web缓存(web cache)到底是是什么?Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在与Web服务器和客户端(浏览器)直接的副本.缓存会根据进来的请求

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

导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 cPanel 管理系统的 Centos 7 服务器上安装 Nginx 作为 Apache 的反向代理服务器.Nginx 作为前端服务器用反向代理为静态文件提供服务,Apache 作为后端为动态文件提供服务.这个设置将整体提高服务器的性能. 让我们过一遍在已经安装好 cPanel 11.52 的 Ce