HTTP代理浅说

简单的说HTTP代理就是处于HTTP客户端和服务器端之间,中转消息的中间人。

一种代理是代客户端去请求服务器,叫做Forward Proxy正向代理;另一种是代理真正的服务器来接收用户请求,叫做Reverse Proxy反向代理。下边分别介绍。

  • 先说正向代理,也是最常见的。

为什么需要?客户端不能直接建立连接到目的服务器。比如大公司的内网(或者大T朝内网),你不能直接PING到外网服务器,根本没有路由器帮你传送IP包到外网(或者某部分外网)。这时候又需要允许内网访问网页,比如百度一下什么的。这时候HTTP代理就是不二选择了。HTTP服务器这时候既要接受内网的请求,又要能连接外网。所以这时候HTTP服务器必须位于所谓的DMZ非军事区或者内外两个网卡非别连接内外网。

正向代理要求客户端必须知道代理服务器的地址和端口,并且显式配置。

浏览器或者其它客户端在使用代理的情况下行为与不使用代理有所不同:

1. 所有网页不再连接目标主机,改为建立TCP连接到代理。

2.发送请求时,必须发送完整URL,比如GET http://www.luoxq.com/index.html,而不能再简单发送GET /index.html。因为代理服务器要知道客户端究竟要访问哪个网站。而不用代理的情况下,客户端已经直接连接到www.luoxq.com了,没必要发主机名。(实际上也有必要,但是历史原因一般通过Host头部发送了)。

3.对与HTTPS连接要特别处理。因为HTTPS就是要保证安全,如果代理能从中看到客户端和服务器的通信就不安全了。比如你不希望使用支付宝的时候代理服务器还看到你发送的信息吧:)。那怎么做到呢?代理协议有个特殊的方法,叫CONNECT。这时候客户端发送一个 CONNECT www.luoxq.com:443请求。代理服务器呢,只是简单的帮客户端连接服务器的443端口,并且以二进制的方式(不去解读,也无法解读内容)中转两方的TCP数据流。客户端和服务器会利用这个隧道连接传送数字证书和公钥。利用PKI公钥机制,代理服务器完全无法解读他们的通信。这样就安全了。说道这里,我们可以想象如果客户端并不是请求页面,代理服务器也无法获知客户端与服务器究竟是不是在做HTTP通信。也就是说通过这个隧道实际上可以建立到外网的任意TCP连接。呵呵。

我们可以想想一个代理服务器 的内部逻辑不会太复杂,对头部的一些解读,然后就是中转数据流。当然一个真正的完整的代理服务器有很多功能,比如缓存等。

  • 下面说说反向代理。也许只有系统管理员才熟悉这个。

反向代理对客户端不可见。也就是说你访问www.luoxq.com很可能你是在访问一个反向代理,但是你并不知道。其实反向代理也可以说是一个门面服务器。反向代理主要起到以下作用:

1. 集群和负载均衡。一个大网站可以由多台服务器提供服务。这些服务器可以位于不可见的内网。反向代理服务器将多个用户请求分发给多台服务器处理。这里当然有比较复杂的配置,比如分发算法,粘住会话,探测服务器状态等。

2.提供业务服务器业务逻辑之外的功能。比如数字证书,单点登录,日志,更好的静态文件性能等。

Apache HTTPD是最常用的代理服务器之一。它既可以配置为正向代理,还可以配置为反向代理,并且它有丰富的插件支持各种功能,或者只是用它作为应用服务器 – 使用PHP, CGI等。官方文档有很好的说明。也可以同时配置成正向和反向代理,并行不悖,并且可以同时给正向代理配置安全属性 – 如果你需要这个可以给我留言。

时间: 2024-11-04 20:20:55

HTTP代理浅说的相关文章

AppScan代理扫描app/H5安全测试

1.首先设置AppScan代理,设置如下: 2.设置手机端代理: 3.通过外部设备调用,记录请求: 直接点击确定,即可扫描到所有的请求

米菲微商代理授权系统开发

米菲微商代理授权系统开发  电微136-6246-4798 今年下半年,非常多的微商企业咨询赢在移动,能否开发类似米菲的微商系统,让代理商统一在微商系统后台下单,不同层级显示不同价格,而且要自带计算各层级代理商的业绩,根据代理商的业绩进行返点.米菲微商授权系统开发详情请询136-6246-4798. 赢在移动作为微商管理系统开发商,长期专注于各自模式的微商系统定制开发服务.针对各大微商品牌的需求,我们为多家企业开发了不同功能的微商系统,包括类似米菲的微商后台下单系统.微商授权系统,微商防窜货系统

谭八爷代理订货平台系统

谭八爷代理订货平台系统  135.3879.3268   谭八爷微商下单系统.谭八爷微商管理系统.谭八爷代理商下单系统等.模式系统开发 传统行业和内容提供本质没有变,但是在结合互联网后的商业模式和运营模式变了,如当前我们谈的多的O2O,核心不是内容提供变化了,是商业模式变化了,这个商业模式变化本身又依托了一个重要假设,即解决了传统行业原有的信息不对称问题. 谭八爷微商平台系统开发的注册流程是非常简单的--扫码注册.同时后台的功能也很强大,代理们收到顾客订单后可以直接在后台向公司下单,同时后台也会

解决CentOS内网机通过Windows下假设代理来访问网络

新分配的CentOS运行在内网环境下,无法连接Internet,为了能够使用yum部署OpenVas工具,需要在内网下一台Windows主机架设代理,作代理服务器来令虚拟机上网. 代理服务器选择了CCproxy,下载并安装CCProxy,配置所要代理的协议,并选择能够联外网的网卡ip 在下方本机局域网IP选择可以与CentOS虚拟机进行通讯的网卡地址,点击确定 账号管理根据个人需要进行配置,我这边选择的是允许所有(建议最好为虚拟机配置账号,方便以后调试和监控) 1..在CentOS中配置全局代理

windows下使用密钥登录Linux及xshell代理转发

1.密钥登录原理 一般我们使用xshell访问远程主机(Linux主机)时,都是先请管理员给我们开一个账户,即为我们设置一个一个用户名和对应的密码,然后我们就可以使用下面的方式登录到远程主机了: 在这种情况下,我们使用的是上面密码登录,也就是说只要知道你这个账号及密码的人都可以在任何地方登录到远程主机,因此安全性较低. 使用密钥登录则不同,他使用的是上图中的public key方式登录,这种方式涉及到一个加密算法RSA,这个算法先生成一个密钥对(公钥和私钥), 我们提供自己的公钥给远程主机,在登

iOS------通知、代理、kvo 详解

通知:通知中心实际上是在程序内部提供了消息广播的一种机制.通知中心不能在进程间进行通信.实际上就是一个二传手,把接收到的消息,根据内部的一个消息转发表,来将消息转发给需要的对象.通知中心是基于观察者模式的,它允许注册.删除观察者. 一个 NSNotificationCenter 可以有许多的通知消息 NSNotification, 对于每一个 NSNotification 可以有很多的观察者 Observer 来接收通知. 委托代理:委托代理(degegate),顾名思义,把某个对象要做的事情委

Ubuntu Linux下通过代理(proxy)使用git上github.com

github.com,作为程序员的代码仓库,我们经常会用到.但有时候我们不能直接通过网络链接它,只能通过代理. 这里我有一台代理服务器,起初我以为在终端设置了代理环境就行了,其设置为在你的~/.bashrc里增加以下几行: export http_proxy="http://proxy-server:3128/" export https_proxy="http://proxy-server:3128/" export ftp_proxy="http://

linux下实现nginx反向代理

正向代理架构图 反向代理架构图 反向代理服务器决定哪台服务器提供服务 Nginx实现反向代理 两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容 准备两个tomcat服务器 修改8081的port *启动两个tomcat *配置域名的映射关系 *配置nginx.conf的配置文件, *保存完后重新加载配置后生效

抓包工具:fiddler、charles手机连接电脑代理

手机连接charles代理 1.电脑默认已经安装charles(未安装可参考网上教程) 2.打开charles,如下图: 2.Proxy->ssl Proxying Settings  设置,如图红框标识(443为https的端口号)<设置一次就好,之后默认了> 3.  不要关闭charles 4.电脑端查看ip(开始-输入:cmd-确认-dos下输入命令:ipconfig,查看ipv4,即为电脑ip) 5.手机打开设置,连接的无线,选择高级选项-手动,配置电脑ip+8888端口号 6.