代理服务器用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
外部网络上的主机不配置使用这个代理服务器,普通代理服务器设计为在Internet上搜寻多个不确定的服务器,不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。
当一个代理服务器能够代理外部网络上的主机,访问内部网络时的方式称为反向代理服务。
此时代理服务器对外表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。
不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。
对反向代理服务器的攻击不会破坏网页信息,增强了Web服务器的安全性。
反向代理服务器(Reverse Proxy)
以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,代理服务器对外就表现为一个服务器。
代理服务器充当服务器,安全反向代理的用途,配置安全反代的方法,反向代理比较
squid,nginx,lighttpd 区别,
在nginx的文档说明异步传输可以减少后端连接数和压力
传输上分可以分为
1.同步模式(apache-mod_proxy和squid),浏览器发起请求,而后请求会立刻被转到后台,于是在浏览器和后台之间就建立了一个通道。请求发起直到请求完成,这条通道都是一直存在的。
2.异步模式(Lighttpd 和 nginx),浏览器发起请求,请求不会立刻转到后台,而是将请求数据(header)先收到nginx上,然后nginx再把这个请求发到后端,后端处理完之后把数据返回到nginx上,nginx将数据流发到浏览器,这点和lighttpd有点不同,lighttpd是将后端数据完全接收后才发送到浏览器。
apache和squid的反向会增加后端web的负担,因为每个用户请求都会在proxy上与后端server建立的长久链接,数据取完前,连接不会消失。
因为wan速度与lan速度的不同,虽然lan之间的速度是极度快的,但是用户的wan连接决定了这个时间长。
lighttpd和nginx的异步模式,是不管用户要求的数据有多大,都是先收下来,再与后端联系,这是非常迅速的速度,所以proxy与后端连接时间也会很短,几十M的东西也是几秒内。
后端不需要维护这么多连接。而lighttpd也和nginx不同的异步,lighttpd是先收完再转向客户浏览器,而nginx是边收数据边转向用户浏览器。
好处
1. 用户执行一个上传文件操作,因为用户网速又比较慢,因此需要花半个小时才能把文件传到服务器。
squid同步代理在用户开始上传后就和后台建立了连接,半小时后文件上传结束,后台服务器连接保持了半个小时;
nginx异步代理是先将此文件收到nginx上,因此仅仅是nginx和用户保持了半小时连接,后台服务器在这半小时内没有为这个请求开启连接,半小时后用户上传结束,nginx才将上传内容发到后台,nginx和后台之间的带宽是很充裕的,所以只花了一秒钟就将请求发送到了后台,后台服务器连接保持了一秒。
同步传输花了后台服务器半个小时,异步传输只花一秒,优化程度很大。
2. 假如后台服务器因为种种原因重启了,上传文件就自然中断了,这对用户来说是非常恼火的一件事情,想必各位也有上传文件传到一半被中断的经历。
用nginx代理之后,后台服务器的重启对用户上传的影响减少到了极点,而nginx是非常稳定的并不需要常去重启它,即使需要重启,利用kill -HUP就可以做到不间断重启nginx
3. 异步传输可以令负载均衡器更有保障,为什么这么说呢?
在其它的均衡器(lvs/haproxy/apache等)里,每个请求都是只有一次机会的,假如用户发起一个请求,结果该请求分到的后台服务器刚好挂掉了,那么这个请求就失败了;
而nginx因为是异步的,所以这个请求可以重新发往下一个后台,下一个后台返回了正常的数据,于是这个请求就能成功了。
假如不但用了nginx代理,而且用了负载均衡,nginx把上传文件发往其中一台后台,但这台服务器突然重启了,nginx收到错误后,会将这个上传文件发到另一台后台,于是用户就不用再花半小时上传一遍。
4. 假如用户上传一个10GB大小的文件,而后台服务器没有考虑到这个情况,那么后台服务器岂不要崩溃了。
用nginx就可以把这些东西都拦在nginx上,通过nginx的上传文件大小限制功能来限制,另外nginx性能非常有保障,就放心的让互联网上那些另类的用户和nginx对抗去吧。
用异步传输会造成问题:
后台服务器有提供上传进度的功能的话,用了nginx代理就无法取得进度,这个需要使用nginx的一个第三方模块来实现。
Lighttpd
//www.lighttpd.com.cn/
德国人领导的开源Web服务器软件,根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。
支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写,Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用 户是非常重要的,因为迁移到lighttpd就必须面对这些问题
Squid Cache(简称为Squid)
//www.squid-cache.org
是一个流行的代理服务器和Web缓存服务器软件。
Squid有广泛的用途,从作为网页服务器的前置缓存服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网、域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。
Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与HTTPS的支持也相当好,在3.0测试版中也支持了IPv6。
Apache
//www.apache.org/
Apache HTTP Server(简称Apache)
是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
Nginx
是一个来自俄罗斯的流行的Web应用服务器
,被应用于大量的俄罗斯的高并发站点,俄罗斯的搜索引擎网站Rambler就是基于Nginx构建的。
Nginx对静态页面的支持相当出色,轻量且免费。Nginx不支持CGI,但是支持更灵活的FastCGI。
PHP5.2及之前的版本比较多的是使用PHP-FPM来管理PHP FastCGI进程。
PHP-FPM使用给PHP源码打补丁后编译的方式让新手多少有些难上手,但从PHP 5.3.2开始内置PHP-FPM,只需编译PHP时启用PHP-FPM
Jigsaw
Jigsaw是W3C推出的开源的Web服务器平台,使用Java语言编写,可以安装在有Java运行环境的系统上。
做为W3C(World Wide Web Consortium)开发的服务器产品,其作用主要是对新技术的实现做一个例示,而非一个全功能的商业服务器产品。
Jigsaw 2.0版本的功能还是超过了目前Web服务器的平均水平。
体现了未来HTTP协议和基于对象的Web服务器技术的发展。如果希望平台支持所有下一代技术,Jigsaw是一个好的选择。
Boa
很多的网站管理员对在硬件配置较低的服务器上使用轻量级的Boa作为Web服务器极其信赖。Boa是一个单线程的HTTP服务器,Boa只能依次完成用户的请求而不会fork新的进程来处理并发请求。
Boa的设计目的是速度和安全,对于运行于单服务器的流行Web站点而言,Boa是一个好的选择。
9朵
1个