Nginx能做什么1、反向代理2、负载均衡3、HTTP服务器(包括动静分离)4、正向代理以上就是我所知道的Nginx在不依赖第三方模块的情况下可以搞定的。下面详细介绍各个功能的实现方法。反向代理反向代理应该是Nginx做的最多的事情之一。什么是反向代理?连接请求被转发到内部网络的服务器,服务器得到的结果返回给互联网上请求连接的客户端。此时代理服务器对外充当反向代理服务器。简单来说,真实服务器不能被外网直接访问,所以需要一个代理服务器,代理服务器可以在和真实服务器处于同一个网络环境的情况下被外网访问。当然也有可能是同一个服务器,端口不同而已。下面贴一段简单的反向代理代码,保存配置文件并启动Nginx,这样我们访问localhost就相当于访问localhost:8080。负载均衡负载均衡也是Nginx常用的功能。负载均衡是指分配给多个运行单元执行,如Web服务器、FTP服务器、企业关键应用服务器等关键任务服务器,共同完成工作任务。简单来说就是当有两台或两台以上服务器时,将请求按照规则随机分发到指定的服务器上进行处理。一般负载均衡配置需要同时配置反向代理,通过反向代理跳转到负载均衡。Nginx目前支持3种负载均衡策略和2种常用的第三方策略。1.RR(默认)每个请求按时间顺序一一分配给不同的后端服务器。如果后台服务器宕机,可以自动清除。简单配置负载均衡的核心代码在这里。我配置了2台服务器,当然实际上是一台,只是端口不一样,而且8081服务器不存在,也就是说不能访问,但是我们访问http://localhost,会有没问题,默认会跳转到http://localhost:8080,具体是因为Nginx会自动判断服务器的状态,如果服务器无法访问(服务器挂了),是不会跳转到这个服务器的,所以它也避免了服务器挂掉影响使用的情况。由于Nginx默认是RR策略,我们不需要其他更多的设置。2.权重指定轮询概率,权重与访问比例成正比,用于后端服务器性能参差不齐的情况。比如10次,只有1次会访问8081,9次会访问80803。上面ip_hash的两种方式都有一个问题,就是下一个请求来的时候,请求可能会分发到另外一台服务器,当我们的程序不是无状态的(session是用来保存数据的),这时候有一个很大的问题,比如在session中保存登录信息,那么在跳转到另外一个服务器的时候,就需要重新登录,这么多有时候我们需要一个客户端只能访问一个服务器,那么就需要使用ip_hash,ip_hash的每次请求都是根据访问ip的hash结果分配的,这样每个访问者固定访问一个后端服务器,就可以解决会话问题。4.公平(第三方)请求根据后端服务器的响应时间分配,响应时间短的优先。5、url_hash(第三方)根据访问的url的hash结果分配请求,使每个url指向同一个后端服务器,后端服务器有缓存时更有效。向上游添加哈希语句。服务器语句中不能写其他参数,如重量。hash_method是使用的散列算法。以上五种负载均衡适用于不同的情况,大家可以根据实际情况选择使用哪种策略模式,但是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后面其实是跟着一个正则表达式,所以非常灵活。正向代理正向代理是指客户端和原始服务器(originserver)之间的服务器。为了从原始服务器获取内容,客户端向代理发送请求并指定目标(源服务器),然后代理发送源服务器转发请求并将获取的内容返回给客户端。客户端可以使用正向代理。当你需要使用你的服务器作为代理服务器时,你可以使用Nginx来实现正向代理,但是Nginx目前有个问题,就是不支持HTTPS。虽然一直去百度配置HTTPS的正向代理,但是最后发现代理还是不能用。当然也有可能是我的配置不对,希望知道正确方法的同志们留言说明。Resolver是配置正向代理的DNS服务器,listen是正向代理的端口。配置完成后,就可以使用服务器ip+端口号在IE或者其他代理插件上进行代理了。最后想说的是Nginx支持热启动。也就是说,我们修改配置文件后,可以在不关闭Nginx的情况下让配置生效。当然,我不知道有多少人知道这一点。反正我一开始不知道。因此,Nginx线程经常被杀死并重新启动。..Nginx重新读取配置的命令是nginx-sreloadwindows,下面是nginx.exe-sreload
