主机、服务器,代理服务器,反向代理服务器理解(自用)

96
纸简书生
0.3 2016.11.28 17:36* 字数 2467

一、服务器和主机

当用作网络服务的机子时叫服务器。必须具有承担服务并且保障服务的能力,为其他网络设备提供网络服务。

最简单的一句话:主机和服务器是相对而言的。 专业的服务器的配置是很高的,不过本身从硬件上来说还是电脑主机,当用作网络服务时就叫服务器了

主机一般是指个人使用的电脑PC机。服务器一般是指用于专业用的电脑PC机,在实质上,服务器和主机没有什么意义上的区别。主机如果做为服务器也是可以的,服务器也可以当个人主机用。 然而我们平时要做为真正的服务器来使用时(一般是企业)。服务器的硬件要求要比普通的个人PC要求要高的多。比如WEB服务器,要24小时不能离线。所以在散热,耐热等方面就比普通PC要高很多。

其实服务器的模样就和电脑的主机很相似,但是服务器是网站的灵魂,是打开网站的必要载体,没有服务器的网站用户无法浏览。比如我们每天浏览的网站,其实数据均在服务器,服务器一般都在一些IDC数据中心机房以及电信等网络大厦里面。

服务器是网络环境中的高性能计算机,它侦听网络上的其他计算机(客户机)提交的服务请求,并提供相应的服务,为此,服务器必须具有承担服务并且保障服务的能力。我们这里提到的服务器,主要是指的Web服务器,我们也称之为专用服务器,是专为网站业务应用的服务器,这种服务器可以向发出请求的浏览器提供文档的程序。Web服务器也是一种被动的程序,只有当服务器接收到浏览器发出的请求时,服务器才会响应。

二、代理服务器

形象的说:它是网络信息的中转站。代理服务器就好象一个大的Cache,这样就能显著提高浏览速度和效率。更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能

  • 通俗的例子:比如你家的门坏了,不能走出屋子,你只能借助你家后门并且通过邻居家的门走出屋子。完成这样一个目的,就等于说是借助其他通道到达你想要到达的目的地。

代理服务器也一样,比如本地网络无法直接访问一些网站或者服务器,必须通过一个代理点服务器,那个服务器和你的本地网络是可以直接ping的通的,然后你就必须设置这个代理服务器的一些参数,比如ip,端口,然后通过这个平台连接到其他网络区域。

提供代理服务的电脑系统或其它类型的网络终端称为代理服务器(英文:Proxy Server)。一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。

三、反向代理服务器

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

其实代理和反向代理只是针对不同的对象而言,对于客户机发出请求来说就是代理,对于客户机收到服务端的响应而言就是反向代理

四、代理服务器与反向代理服务器的区别

代理服务器与反向代理服务器的区别讲得比较清楚

代理服务器通常分为两类

  • 即转发代理(forward proxy)服务器
  • 反向代理(reverse proxy)服务器。
  • 转发代理服务器又通常简称为代理服务器,我们常提到的代理服务器就指的是转发代理服务器。

两者区别

两者的相同点在于都是用户和服务器之间的中介,完成用户请求和结果的转发。主要的不同在于:

  • (1)转发代理的内部是客户端,而反向代理的内部是服务器。即内网的客户端通过转发代理服务器访问外部网络,而外部的用户通过反向代理访问内部的服务器。

  • (2)转发代理通常接受客户端发送的任何请求,而反向代理通常只接受到指定服务器的请求。如校园网内部用户可以通过转发代理访问国外的任何站点(如果不加限制的话),而只有特定的请求才发往反向代理,然后又反向代理发往内部服务器。

五、Nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

六、Apache与Nginx的优缺点比较

知乎-Nginx 和 Apache 各有什么优缺点?

從我個人的經驗來看,nginx是很不錯的前端服務器,負載性能很好,在老奔上開nginx,用webbench模擬10000個靜態文件請求毫不吃力。

apache對php等語言的支持很好,此外apache有強大的支持網路,發展時間相對nginx更久,bug少。但是apache有先天不支持多核心處理負載雞肋的缺點

建議使用nginx做前端,後端用apache。大型網站建議用nginx自代的集群功能。Nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。

  • Nginx 配置简洁, Apache 复杂
  • Nginx 静态处理性能比 Apache 高 3倍以上
  • Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用
  • Apache 的组件比 Nginx 多

知乎-tomcat 与 nginx,apache的区别是什么?

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

是Apache HTTP Server和Nginx,绝大多数编程语言所包含的类库中也都实现了简单的HTTP服务器方便开发者使用。

HttpServer (Java HTTP Server )

Python SimpleHTTPServer

使用这些类库能够非常容易的运行一个HTTP服务器,它们都能够通过绑定IP地址并监听tcp端口来提供HTTP服务。

Tomcat:与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。

Apache HTTP ServerNginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的。这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。

Apache HTTP ServerNginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过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的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理。
服务端技术