Nginx的主要功能:1.反向代理2.负载均衡3.HTTP服务器(包括动静分离)4.正向代理1.反向代理反向代理应该是Nginx做的最多的了都是对了,什么是反向代理?以下是百度百科的说法:反向代理(ReverseProxy)方式是指使用代理服务器接受互联网上的连接请求,然后将请求转发给内网的某个服务器,并从该服务器获取结果返回给互联网上请求连接的客户端,代理服务器作为对外的反向代理服务器。简单来说,真实服务器不能被外网直接访问,所以需要一个代理服务器,代理服务器可以在和真实服务器处于同一个网络环境的情况下被外网访问。当然也有可能是同一个服务器,端口不同而已。下面一段简单实现后台代理代码服务器{listn80;服务器\_名称本地主机;客户端\_max\_body\_size1024m;本地/{代理\_passhttp:8080;proXYAHHHHHHORSHOST:8080;主机$host:$server\_port;】保存配置文件后,启动Nginx,这样我们访问本地主机就相当于访问本地主机:8080。2.负载均衡负载均衡也是Nginx常用的功能。负载均衡是指分配给多个运行单元执行,如:Web服务器、FTP服务器、企业关键应用服务器和其他关键任务服务器等,共同完成工作任务。简单来说就是当有两台或两台以上服务器时,将请求按照规则随机分发到指定的服务器上进行处理。一般负载均衡配置需要同时配置反向代理,通过反向代理跳转到负载均衡。Nginx目前支持3种负载均衡策略和2种常用的第三方策略。1.RR(默认)每个请求按照时间顺序一一分配给不同的后端服务器。如果后台服务器宕机,可以自动清除。简单配置upstreamtest{serverlocalhost:8080;服务器本地主机:8081;}服务器{听81;服务器\_名称本地主机;客户端\_max\_body\_size1024M;location/{proxy\_passhttp://test;代理\_set\_header主机$host:$server\_port;访问http://localhost时不会有问题,默认会跳转到http://localhost:8080。具体原因是Nginx会自动判断服务器的状态。如果服务器无法访问(服务器宕机),则不会跳转到这台服务器,这样也避免了某台服务器挂掉影响使用的情况。由于Nginx默认是RR策略,我们不需要其他更多的设置。2.权重指定轮询概率,权重与访问比例成正比,用于后端服务器性能参差不齐的情况。例如,上游测试{serverlocalhost:8080weight=9;服务器本地主机:8081权重=1;}那么在10次中,只有1次访问8081,9次访问8080。3.上面两种ip\_hash的方法都有一个问题,就是当下一个请求到来的时候,这个请求可能会分发到另外一台服务器上。当我们的程序不是无状态的时候(使用session保存数据),这时候就出现了很大的问题,比如session中保存了登录信息,那么跳转到另外一个服务器的时候需要重新登录,所以很多时候我们需要一个客户端只能访问一个服务器,那么我们就需要用iphash,iphash的每次请求都是根据访问ip的hash结果来分配的,这样每个访问者定时访问一个后端服务器,这样就可以解决session问题。上游测试{ip\_hash;服务器本地主机:8080;服务器本地主机:8081;}4.fair(thirdparty)根据后端服务器的响应时间分配请求,响应时间短的优先。上游后端{公平;服务器本地主机:8080;服务器本地主机:8081;}5.url\_hash(thirdparty)根据访问url的hash结果分配请求,这样每个url都指向同一个后端服务器,后端服务器做缓存更有效。向上游添加哈希语句。服务器语句中不能写其他参数,如重量。hash\_method是使用的散列算法。上游后端{hash$request\_uri;哈希\_方法crc32;服务器本地主机:8080;服务器本地主机:8081;}以上五种负载均衡适用于不同的情况,可以根据实际情况选择使用哪种策略模式,但是fair和url\_hash需要安装第三方模块才能使用。由于本文主要介绍Nginx可以做什么,Nginx安装第三方模块本文不再介绍。3、HTTP服务器Nginx本身也是一个静态资源服务器。当只有静态资源时,可以使用Nginx作为服务端。同时,静态和动作分离也很流行,所以可以通过Nginx来实现。首先,让我们将Nginx视为静态资源。服务器。服务器{听80;服务器\_名称本地主机;客户端\_max\_body\_size1024M;位置/{roote:\\wwwroot;索引index.html;这样,如果访问http://localhost,默认会访问E盘的wwwroot目录下的index.html,如果一个网站只是一个静态页面,那么可以这样部署。动静分离动静分离就是让动态网站中的动态网页按照一定的规则把不变的资源和经常变化的资源区分开来。动静态资源拆分后,我们可以根据静态资源的特点进行缓存操作,这就是网站静态处理的核心思想。上游测试{服务器本地主机:8080;服务器本地主机:8081;}服务器{听80;服务器\_名称本地主机;位置/{roote:\\wwwroot;索引index.html;}#所有静态请求都由nginx处理并存储目录为HTMLLOCATION~\\.jsp|do)${proxy\_passhttp://test;}error\_page500503504/50x.html;local=/50x.html{roote:\\wwwroot;}}而图片、css、js都放在wwwroot目录下,tomcat只负责处理jsp和请求。比如当我们的后缀为gif时,Nginx会默认从wwwroot获取当前请求的动态图片文件并返回。当然,这里的静态文件是和Nginx在同一台服务器上的,我们也可以在另外一台服务器上,然后通过反向代理和负载均衡进行配置。只要了解最基本的流程,很多配置都非常简单。另外,localtion后面其实是跟着一个正则表达式,所以非常灵活。4.正向代理forwardProxy是指客户端和源服务器之间的服务器。客户端为了从源站获取内容,向代理发送请求并指定目标(源服务器),然后代理将请求转发给源站,并将获取到的内容返回给客户端。客户端可以使用正向代理。当你需要使用你的服务器作为代理服务器时,你可以使用Nginx来实现正向代理,但是Nginx目前有个问题,就是不支持HTTPS。虽然一直去百度配置HTTPS的正向代理,但是最后发现代理还是不能用。当然也有可能是我的配置不对。解析器114.114.114.1148.8.8.8;服务器{解析器\_timeout5s;听81;access\_loge:\\wwwroot\\proxy.access.log;error\_loge:\\wwwroot\\proxy.error.log;location/{proxy\_passhttp://$host$request\_uri;resolver是配置正向代理的DNS服务器,listen是正向代理的端口。配置好后就可以在ie或者其他代理插件上使用服务器ip+端口号进行代理了。注意:Nginx是支持热重启的,也就是说我们修改配置文件后,配置可以在不关闭Nginx的情况下生效。Nginx重新读取配置的命令是:nginx-sreload。
