小猪站长告诉你Nginx可以做什么
发表于 2019-07-25 20:24
本文只讨论Nginx在不加载第三方模块的情况下可以处理什么。因为有太多的第三方模块,所以不能引入它。当然,本文也可能引入不完全性。毕竟,这只是小猪站长的使用和理解。
Nginx能做什么
——反向代理
——负载均衡
——HTTP服务器(动静分离)
——正向代理
以上就是我了解到的Nginx在不依赖第三方模块能处理的事情,下面详细说明每种功能怎么做。
反向代理
反向代理应该是Nginx做的最多的事情。什么是反向代理?下面是百度百科全书的声明:反向代理是指在Internet上接受连接请求的代理服务器。然后将请求转发到内部网络上的服务器,并将从服务器获得的结果返回到请求在internet上连接的客户机,此时代理服务器充当反向代理服务器。简单地说,真实服务器不能被外部网络直接访问,因此需要一个代理服务器,并且代理服务器可以被外部网络访问,同时与真实服务器处于相同的网络环境中。当然,它可能是相同的服务器,只是端口不同。
下面贴上一段简单的实现反向代理的代码
保存配置文件后启动Nginx,这样当我们访问localhost的时候,就相当于访问localhost:8080了
负载均衡
负载均衡也是Nginx的一个常用功能。负载平衡意味着它被分配到多个操作单元执行,例如Web服务器、FTP服务器、企业关键应用程序服务器和其他关键任务服务器,以完成工作任务。简单地说,当有两个或多个服务器时,根据规则将请求随机分布到指定的服务器。负载平衡配置通常需要同时配置反向代理,并通过反向代理跳转到负载平衡。Nginx目前支持三种负载平衡策略和两种常见的第三方策略。
1、RR(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
简单配置
负载均衡的核心代码为
这里我配置了两台服务器,当然,它实际上是一台,但是端口不同。8081服务器不存在,这意味着访问不可用,但当我们访问http://localhost时,会有问题,默认将跳转到http://localhost: 8080特别,因为Nginx将自动确定服务器的状态,如果服务器无法访问(服务器挂了),它不会跳转到该服务器,也避免影响使用一个服务器挂起。由于Nginx默认为RR策略,所以我们不需要更多的设置。
2、权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如
那么10次一般只会有1次会访问到8081,而有9次会访问到8080
3、ip_hash
上述两种方法都存在一个问题,即当下一个请求到来时,请求可能被分发到另一个服务器。当我们的程序不是无状态的(使用会话来保存数据),就会有很大的时间。非常有问题,如登录信息保存到会话,那么你需要重新登录时跳转到另一个服务器,所以很多时候我们需要一个客户端访问只有一个服务器,那么您需要使用iphash, iphash每个请求分配根据的哈希结果访问ip,这样每个访问者都有一个固定的访问后端服务器,可以解决session的问题。
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5、url_hash(第三方)
请求由访问url的散列结果分配,因此每个url都指向相同的后端服务器,而后端服务器的缓存效率更高。在上游添加一个哈希语句,服务器语句不能写权值等参数,hash_method是哈希算法使用的
以上5种负载均衡各自适用不同情况下使用,所以可以根据实际情况选择使用哪种策略模式,不过fair和url_hash需要安装第三方模块才能使用,由于本文主要介绍Nginx能做的事情,所以Nginx安装第三方模块不会再本文介绍
HTTP服务器
Nginx本身也是一个静态资源服务器。当只有静态资源时,可以使用Nginx来做服务器。同时,它也是非常流动和静态的。它可以由Nginx实现。首先,让我们将Nginx看作一个静态资源服务器。
这样如果访问http://localhost 就会默认访问到E盘wwwroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
动静分离
动态分离是指动态网站中的动态网页按照一定的规则将固定资源与频繁变化的资源进行分离。动态资源分割后,可以根据静态资源的特点进行缓存。这是网站静态处理的核心思想
所以我们可以把HTML和图像css和js放在wwwroot目录下,tomcat只负责处理jsp和请求,例如,当我们给gif加上后缀时,Nginx默认会从wwwroot中获取当前请求的动态图像文件。当然,这里的静态文件是与Nginx相同的服务器。我们还可以使用另一台服务器,然后反向代理和负载平衡配置。一旦我们确定了最基本的流程,许多配置就非常简单了。localtion之后是一个正则表达式,所以非常灵活
正向代理
正向代理,即客户机和源服务器之间的服务器。为了从源服务器检索内容,客户机向代理发送一个请求并指定目标(源服务器),然后代理将数据包转发到源服务器。请求并将内容返回给客户机。客户端可以使用转发代理。当你需要使用您的服务器作为一个代理服务器,您可以使用Nginx实现转发代理,但目前Nginx有问题,那么它不支持HTTPS,虽然我已经配置HTTPS的转发代理,但到最后我发现它仍然不是一个代理。当然,也有可能是我的配置不对。
resolver是配置正向代理的DNS服务器,listen 是正向代理的端口,配置好了就可以在ie上面或者其他代理插件上面使用服务器ip+端口号进行代理了。
评论 (0人参与)
最新评论