nginx是高性能的HTTP和反向代理服务器,其特点占用内存少,并发能力强,服务器稳定,国内许多知名企业就用到了nginx。
nginx的主要作用有以下几点:
1.静态资源服务器,实现动静分离,举例说明,我们在访问网站的时候,请求的静态资源和动态资源不是同一个服务器做处理,静态资源直接访问静态资源服务器(这个服务器专门保存静态资源),拿到相应结果返回给用户端。动态资源呢?访问专门处理动态资源的服务器,比如你要查询,访问的一定是动态服务器。这样就实现了动静分离,这样做有什么好处呢?假如我们所有的请求都访问动态服务器,在并发量激增的情况下严重降低了服务器的性能,增加了服务器的压力,影响了服务器的运转,便产生负载压力过大的现象,所以我们给请求进行了细分,不同的请求分往不同的服务器上做处理,大大降低了服务器的压力,做到物尽其用。
2.实现虚拟主机,也就是说部署一台nginx服务器,把它当成多台主机来使用,这个我在之前的文章分析过,主要是解决服务器资源浪费的问题,再此不做过多描述。
3.实现tomcat集群和负载均衡,这就是nginx的高可用之处,反向代理,代理的是服务器端,在实际开发中,服务器端和nginx反向代理服务器之间是局域网,有效的保护了服务器的安全。nginx反向代理服务器充当中介,给双方都提供了保护,什么是负载均衡呢?如果nginx只代理一台服务器,我们可以把它理解成替身,如果是集群,那nginx就变成了负载均衡器,把客户端的请求按照一定规则【默认1.轮询,就是轮着来,2.热备 backup,相当于替补,3.服务器权重 weight,根据我们设置的值来确定服务器的负载量,4.配置负载均衡算法 ip_hash】访问服务端。
代理服务器,配置nginx.conf文件,nginx默认访问的是index.html,知道这一点后我们修改其默认访问路径,更改为tomcat集群列表,这样,客户端在访问的时候,nginx把请求分发到不同的tomcat上,而tomcat连接zk集群,zk集群又连接了生产者,这样就形成了一条链子,连接了整个服务。
有的朋友会问?你这样是实现了负载均衡,可是nginx服务器仍然是单机的,如果确保安全,把nginx搭建成集群即可。
有的朋友还有疑问,一个war项目部署到tomcat上产生集群,那多个项目呢?是同样部署在这个集群还是在这个nginx服务器上在搭建多个tomcat集群呢?这个是根据实际情况而定,通过监控中心的数据来决定,如果继续在这个集群上部署,同样的步骤即可,如果需要搭建新的tomcat集群,利用nginx实现虚拟主机的特性,根据域名来区分不同的集群也是可以的。