nginx的主要功能介绍
nginx的主要功效介绍:
(引荐教程:nginx教程)
一、反向代理
反向代理应当是 Nginx 做的最多的一件事了,什么是反向代理呢,以下是baidu百科的说法:反向代理(Reverse Proxy)方式是指以代理效劳器来接受 internet上 的连接恳求,然后将恳求转发给内部网络上的效劳器,并将从效劳器上得到的结果返回给 internet 上恳求连接的客户端,此时代理效劳器对外就展现为一个反向代理效劳器。
简便来说就是真实的效劳器不克不及直接被外部网络拜访,所以需要一台代理效劳器,而代理效劳器能被外部网络拜访的同时又跟真实效劳器在统一个网络环境,当然也大概是统一台效劳器,端口不一样罢了。
下面贴上一段简便的实现反向代理的代码:
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; } }
留存配置文件后启动 Nginx,这样当我们拜访 localhost 的时候,就相当于拜访 localhost:8080 了。
二、负载平衡
负载平衡也是 Nginx 常用的一个功效,负载平衡其意思就是分摊到多个操纵单元上停止施行,例如:Web效劳器、FTP效劳器、公司关键利用效劳器和其它关键任务效劳器等,从而共同完成工作任务。
简便而言就是当有2台或以上效劳器时,按照规则随机的将恳求分发到指定的效劳器上处置,负载平衡配置一样都需要同时配置反向代理,通过反向代理跳转到负载平衡。而Nginx当前支撑自带3种负载平衡战略,还有2种常用的第三方战略。
1、RR(默许)
每个恳求按时间次序逐一分配到不一样的后端效劳器,假如后端效劳器down掉,能主动剔除。 简便配置 upstream test { server localhost:8080; server localhost:8081; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } }
配置了2台效劳器,当然实际上是一台,只是端口不一样罢了,而8081的效劳器是不存在的,也就是说拜访不到,但是我们拜访http://localhost 的时候也不会有问题,会默许跳转到http://localhost:8080 详细是由于Nginx会主动推断效劳器的状态。
假如效劳器处于不克不及拜访(效劳器挂了),就不会跳转到这台效劳器,所以也幸免了一台效劳器挂了影响使用的状况,由于 Nginx 默许是RR战略,所以我们不需要其他更多的设定。
2、权重
指定轮询几率,weight和拜访比率成正比,用于后端效劳器机能不均的状况。
例如:
upstream test { server localhost:8080 weight=9; server localhost:8081 weight=1; }
那么10次一样只会有1次会拜访到8081,而有9次会拜访到8080。
3、ip_hash
上面的2种方式都有一个问题,那就是下一个恳求来的时候恳求大概分发到别的一个效劳器,当我们的程序不是无状态的时候(采纳了session留存数据),这时候就有一个很大的很问题了,比方把登录信息留存到了session中,那么跳转到别的一台效劳器的时候就需要从新登录了,所以许多时候我们需要一个客户只拜访一个效劳器,那么就需要用iphash了。
iphash的每个恳求按拜访ip的hash结果分配,这样每个访客牢固拜访一个后端效劳器,可以解决session的问题。
upstream test { ip_hash; server localhost:8080; server localhost:8081; }
4、fair(第三方)
按后端效劳器的响应时间来分配恳求,响应时间短的优先分配。
upstream backend { fair; server localhost:8080; server localhost:8081; }
5、url_hash(第三方)
按拜访url的hash结果来分配恳求,使每个url定向到统一个后端效劳器,后端效劳器为缓存时比力有效。 在upstream中参加hash语句,server语句中不克不及写入weight等其他的参数,hash_method是使用的hash算法。
upstream backend { hash $request_uri; hash_method crc32; server localhost:8080; server localhost:8081; }
以上5种负载平衡各自适用不一样状况下使用,所以可以按照实际状况选中使用哪种战略模式,不外fair和url_hash需要安置第三方模块才能使用,由于本文主要介绍Nginx能做的事情,所以Nginx安置第三方模块不会再本文介绍。
三、HTTP效劳器
Nginx本身也是一个静态资源的效劳器,当只要静态资源的时候,就可以使用Nginx来做效劳器,同时此刻也很流动作静别离,就可以通过Nginx来实现,第一看看Nginx做静态资源效劳器。
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { root e:\wwwroot; index index.html; } }
这样假如拜访http://localhost 就会默许拜访到E盘wwwroot名目下面的index.html,假如一个网站只是静态页面的话,那么就可以通过这种方式来实现摆设。
动静别离
动静别离是让动态网站里的动态网页按照必然规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分今后,我们就可以按照静态资源的特点将其做缓存操纵,这就是网站静态化处置的中心思绪。
upstream test{ server localhost:8080; server localhost:8081; } server { listen 80; server_name localhost; location / { root e:\wwwroot; index index.html; } # 所有静态恳求都由nginx处置,存置名目为html location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root e:\wwwroot; } # 所有动态恳求都转发给tomcat处置 location ~ \.(jsp|do)$ { proxy_pass http://test; } error_page 500 502 503 504 /50x.html; location = /50x.html { root e:\wwwroot; } }
这样我们就可以把HTML乃至图片和css乃至js放到wwwroot名目下,而tomcat只负责处置jsp和恳求,
例如当我们后缀为gif的时候,Nginx默许会从wwwroot猎取到当前恳求的动态图文件返回,当然这里的静态文件跟Nginx是统一台效劳器。
我们也可以在别的一台效劳器,然后通过反向代理和负载平衡配置过去就好了,只要搞分明了最根本的流程,许多配置就很简便了,别的localtion后面其实是一个正则表达式,所以非常灵敏。
四、正向代理
正向代理,意思是一个位于客户端和原始效劳器(origin server)之间的效劳器,为了从原始效劳器取得内容,客户端向代理发送一个恳求并指定目标(原始效劳器),然后代理向原始效劳器转交恳求并将获得的内容返回给客户端。客户端才能使用正向代理。
当你需要把你的效劳器作为代理效劳器的时候,可以用Nginx来实现正向代理,但是当前Nginx有一个问题,那么就是不支撑HTTPS,虽然我baidu到过配置HTTPS的正向代理,但是到最后发明还是代理不了,当然大概是我配置的不合错误。
resolver 114.114.114.114 8.8.8.8; server { resolver_timeout 5s; listen 81; access_log e:\wwwroot\proxy.access.log; error_log e:\wwwroot\proxy.error.log; location / { proxy_pass http://$host$request_uri; } }
resolver是配置正向代理的DNS效劳器,listen 是正向代理的端口,配置好了就可以在ie上面或者其他代理插件上面使用效劳器ip+端标语停止代理了。
留意:Nginx是支撑热启动的,也就是说当我们修改配置文件后,不消关闭Nginx,就可以实现让配置生效。Nginx从新读取配置的命令是:nginx -s reload。
以上就是nginx的主要功效介绍的具体内容,更多请关注百分百源码网其它相关文章!