大家好,我是IT修真院武汉分院第15期学员,一枚正直善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务3中,什么是nginx?为什么要使用nginx进行反向代理?
什么是ngnix
总结三大优点:性能高、轻量级、易操作
nginx的使用场景
1、反向代理
2、负载均衡
3、动静分离
反向代理:反向代理(ReverseProxy)是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理。
反向代理的作用
1、防止主服务器被恶意攻击
2、为负载均衡和动静分离提供实现支持
负载均衡:使用反向代理同时代理多个相同内容的应用服务器(比如tomcat),将客户端请求分发到各个应用服务器上并接收响应返回给客户端
负载均衡的作用:当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此一来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
动静分离:运用Nginx的反向代理功能分发请求:所有动态资源的请求交给应用服务器,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器
动静分离的作用:主要是nginx处理静态页面的效率远高于tomcat的处理能力,使用c语言开发的nginx对静态资源每秒的吞吐量是使用Java语言开发的tomcat的6倍,也远高于其它应用服务器
总而言之:nginx应用之所以广泛,我认为这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,不论是nginx创建虚拟服务器、nginx的反向代理服务器,还是nginx的负载均衡,几乎都在这个配置文件中进行。服务器上只负责把nginx搭好,跑起来即可。而且它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果,是一个非常值得推崇的服务器。
一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。HTTP的代理服务器即是Web服务器又是Web客户端。
反向代理的实现
1)需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上;
2)服务器返回自己的服务到负载均衡设备;
3)负载均衡将服务器的服务返回用户;
负载均衡策略有几种
Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略。
七、参考文献
八、更多讨论
Q1、正向代理和反向代理的区别?
答:正向代理是代理客户端发送请求,反向代理是代理服务端接收请求
Q2、动态资源里面嵌入的静态资源有必要使用动静分离吗
答:nginx处理静态资源的性能比普通的应用服务器高6倍左右
Q3、server_name可以配置多个吗
反向代理是实现负载均衡的一种方法。先谈反向代理。用户在请求时,先把请求发送给代理的服务器,然后由代理服务器根据算法去请求真实的服务器,最后返回给用户。这种做法,其一是提高了安全性;其二是通过多台的realserver分担了用户的请求,实现了负载均衡。再谈负载均衡。负载均衡的出现,是通过横向的扩展,尽可能地降低单台服务器的压力。常见WEB层面的负载均衡的方案有硬件F5、Nginx代理、LVS、各个云商的负载均衡服务(如AWS的ELB服务)等。负载均衡后面连的一般是实际提供服务的服务器,如通过ELB服务,可以做到流量的均匀分担,从而减少单机服务器的压力。
今天的分享就到这里啦,欢迎大家提问和探讨!