全面了解Nginx到底能做什么
前言
本文只针对Nginx在不加载第三方模块的情况能处置哪些工作,由于第三方模块太多所以也先容不完,固然本文自己也能够先容的不完整,究竟只是我小我利用过和领会到过得。所以还请包涵,同时接待留言交换
Nginx能做什么
1.反向代理
2.负载平衡
3.HTTP办事器(包括消息分手)
4.正向代理
以上就是我领会到的Nginx在不依靠第三方模块能处置的工作,下面具体说明每种功用怎样做
反向代理
反向代理应当是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理(Reverse Proxy)方式是指以代理办事器来接管internet上的毗连请求,然后将请求转发给内部收集上的办事器,并将从办事器上获得的成果返回给internet上请求毗连的客户端,此时代理办事器对外就表示为一个反向代理办事器。简单来说就是实在的办事器不能间接被内部收集拜候,所以需要一台代理办事器,而代理办事器能被内部收集拜候的同时又跟实在办事器在同一个收集情况,固然也能够是同一台办事器,端口分歧而已。 下面贴上一段简单的实现反向代理的代码
[*]server {[*] listen 80;[*] server_namelocalhost;[*] client_max_body_size 1024M;[*][*] location / {[*] proxy_pass http://localhost:8080;[*] proxy_set_header Host $host
static/image/smiley/default/shy.gif
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_namelocalhost;[*] client_max_body_size 1024M;[*][*] location / {[*] proxy_pass http://test;[*] proxy_set_header Host $host
static/image/smiley/default/shy.gif
server_port;[*] }[*]}
负载平衡的焦点代码为
[*]upstream test {[*] server localhost:8080;[*] server localhost:8081;[*]}
这里我设置了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_namelocalhost;[*] client_max_body_size 1024M;[*][*][*] location / {[*] root e:\wwwroot;[*] indexindex.html;[*] }[*]}
这样假如拜候http://localhost 就会默许拜候到E盘wwwroot目录下面的index.html,假如一个网站只是静态页面的话,那末便可以经过这类方式来实现摆设。
消息分手
消息分手是让静态网站里的静态网页按照一定例则把稳定的资本和经常变的资本区分隔来,消息资本做好了拆分今后,我们便可以按照静态资本的特点将其做缓存操纵,这就是网站静态化处置的焦点思绪
[*]upstream test{[*] server localhost:8080;[*] server localhost:8081;[*] }[*][*] server {[*] listen 80;[*] server_namelocalhost;[*][*] location / {[*] root e:\wwwroot;[*] indexindex.html;[*] }[*][*] # 一切静态请求都由nginx处置,寄存目录为html[*] location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {[*] root e:\wwwroot;[*] }[*][*] # 一切静态请求都转发给tomcat处置[*] location ~ \.(jsp|do)$ {[*] proxy_passhttp://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,虽然我百度到过设置HTTPS的正向代理,可是到最初发现还是代理不了,固然能够是我设置的差池,所以也希望有晓得正确方式的同道们留言说明一下。
[*]resolver 114.114.114.114 8.8.8.8;[*]server {[*][*] resolver_timeout 5s;[*][*] listen 81;[*][*] access_loge:\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重新读取设置的号令是
nginx -s reload
windows下面就是
nginx.exe -s reload
页:
[1]