初识代理服务器和常用的代理技术


服务器,也称伺服器。指一个管理资源并为用户提供服务的计算机设备。根据服务器提供的服务类型不同,可分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

代理服务器

代理服务器 是介于浏览器和Web服务器之间的一台服务器,它的功能是代理网络用户取得网络信息。可以形象的称为网络信息的中转站。

完整的代理请求过程

客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。

代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器不会向目标服务器发送请求,而是直接返回缓存了得资源。

sequenceDiagram
    客户端->>代理服务器: 发送请求
    代理服务器-->>服务器: 转发请求
    服务器-->>代理服务器: 返回结果,代理服务器下载资源
    代理服务器->>客户端: 返回结果
注:实线是表示客户端与代理服务器端同属一个内网中。

代理服务器的主要功能

1.突破自身IP访问限制,访问国外站点。
2.访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
3.提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
4.隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。代理服务器还可以改变客户端的原始请求、目标服务器的原始响应。
5.防火墙作用:由于所有的客户机请求都是必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤某些不安全信息。

常用的代理技术

实现代理技术,常用的方法有:正向代理反向代理透明代理三种。

正向代理

正向代理的技术实现方式就是代理服务器,又叫做转发代理服务器

正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

注:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

代理服务器软件————CCProxy的应用场景

CCProxy的功能介绍

1.代理共享上网。只要局域网内有一台机器能够上网,其他机器就可以通过这台机器上安装的CCProxy来代理共享上网,最大程度的减少了硬件费用和上网费用。
2.客户端代理权限管理。只需要在服务器上CCProxy代理服务器软件里进行账号设置,就可以方便的管理客户端代理上网的权限。提高了员工工作效率和企业信息安全管理。

反向代理

反向代理与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理服务器发送请求,反向代理服务器会判断向内网中的某个原始服务器转交请求,并将获得的内容返回给客户端。

sequenceDiagram
    客户端-->>代理服务器: 发送请求
    代理服务器->>服务器集群: 判断转交给内网中的那个服务器
    服务器集群->>代理服务器: 返回结果
    代理服务器-->>客户端: 返回结果
注:实线是表示服务器与代理服务器端同属一个内网中。

反向代理的功能

1、保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击。大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。
2、负载均衡,通过反向代理服务器来优化网站的负载。
3、缓存,减少服务器的压力。

反向代理软件——Nginx

Nginx是一款轻量级的Web服务器(高性能的HTTP)/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

正向代理和反向代理的区别

1、位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;
2、代理对象不同
正向代理,代理客户端,服务器端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务器端;
3、用途不同
正向代理,为在防火墙的局域网客户端提供访问Internet的途径;
反向代理,将防火墙后面的服务器提供给Internet访问;
4、安全性不同
正向代理允许客户端通过他访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务;

透明代理

透明代理是客户端不需要知道有代理服务器的存在,代理服务器会改编客户端请求,但会传送真实的IP。加密的透明代理是属于匿名代理,透明代理与正向代理的请求过程是一样的,唯一不同的是客户端不用再设置使用代理了。

透明代理的应用————行为管理软件

行为管理软件就是管理上网行为的软件。帮助管理者全面了解使用者上网情况和网络使用情况。可以最大限度地避免不当的上网行为带来的潜在风险和损失。

Tomcat与Nginx,apache的区别是什么?

HTTP服务器本质上也是一种应用程序————它通常运行在服务器之上,绑定服务器的IP地址并监听某一个TCP端口来接收并处理HTTP请求,这样客户端(一般来说是IE,Firefox,Chrome这样的浏览器)就能通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等资源。

Tomcat与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的。这个文本文件的内容是固定的————也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。
Apsche HTTP Server和Nginx本身不支持生成动态页面,但它们可通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)。
如果想要使用java程序来动态生成资源内容,Java Servlet技术以及衍生的Java Server Pages技术可以让Java程序也具有处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container):Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口。
虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:

  • 动静态资源分离————运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
  • 负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理。