• 售前

  • 售后

热门帖子
入门百科

全面剖析Nginx到底能做什么

[复制链接]
无为307 显示全部楼层 发表于 2021-10-25 19:34:39 |阅读模式 打印 上一主题 下一主题
前言
本文只针对Nginx在不加载第三方模块的情况能处置惩罚哪些事故,由于第三方模块太多以是也先容不完,固然本文自己也可能先容的不完整,毕竟只是我个人利用过和相识到过得。以是还请见谅,同时欢迎留言交换
Nginx能做什么
1、反向署理
2、负载均衡
3、HTTP服务器(包罗动静分离)
4、正向署理
以上就是我相识到的Nginx在不依靠第三方模块能处置惩罚的事故,下面详细说明每种功能怎么做
反向署理
反向署理应该是Nginx做的最多的一件事了,什么是反向署理呢,以下是百度百科的说法:反向署理(Reverse Proxy)方式是指以署理服务器来继承internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的效果返回给internet上请求连接的客户端,此期间理服务器对外就表现为一个反向署理服务器。简单来说就是真实的服务器不能直接被外部网络访问,以是必要一台署理服务器,而署理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,固然也可能是同一台服务器,端口差别而已。
下面贴上一段简单的实现反向署理的代码
  1. server {
  2.     listen    80;                             
  3.     server_name localhost;                        
  4.     client_max_body_size 1024M;
  5.     location / {
  6.       proxy_pass http://localhost:8080;
  7.       proxy_set_header Host $host:$server_port;
  8.     }
  9.   }
复制代码
生存设置文件后启动Nginx,这样当我们访问localhost的时间,就相称于访问localhost:8080了
负载均衡
负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操纵单元上进行执行,比方Web服务器、FTP服务器、企业关键应用服务器和其它关键使命服务器等,从而共同完成工作使命。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处置惩罚,负载均衡设置一样平常都必要同时设置反向署理,通过反向署理跳转到负载均衡。而Nginx目前支持自带3种负载均衡计谋,还有2种常用的第三方计谋。
1、RR(默认)
每个请求按时间顺序逐一分配到差别的后端服务器,如果后端服务器down掉,能自动剔除。
简单设置
  1. upstream test {
  2.     server localhost:8080;
  3.     server localhost:8081;
  4.   }
  5.   server {
  6.     listen    81;                             
  7.     server_name localhost;                        
  8.     client_max_body_size 1024M;
  9.     location / {
  10.       proxy_pass http://test;
  11.       proxy_set_header Host $host:$server_port;
  12.     }
  13.   }
复制代码
负载均衡的核心代码为
  1.   upstream test {
  2.     server localhost:8080;
  3.     server localhost:8081;
  4.   }
复制代码
这里我设置了2台服务器,固然现实上是一台,只是端口不一样而已,而8081的服务器是不存在的,也就是说访问不到,但是我们访问http://localhost 的时间,也不会有题目,会默认跳转到http://localhost:8080 具体是由于Nginx会自动判定服务器的状态,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,以是也克制了一台服务器挂了影响利用的情况,由于Nginx默认是RR计谋,以是我们不必要其他更多的设置。
2、权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
比方
  1.   upstream test {
  2.     server localhost:8080 weight=9;
  3.     server localhost:8081 weight=1;
  4.   }
复制代码
那么10次一样平常只会有1次会访问到8081,而有9次会访问到8080
3、ip_hash
上面的2种方式都有一个题目,那就是下一个请求来的时间请求可能分发到别的一个服务器,当我们的步伐不是无状态的时间(采用了session生存数据),这时间就有一个很大的很题目了,好比把登录信息生存到了session中,那么跳转到别的一台服务器的时间就必要重新登录了,以是很多时间我们必要一个客户只访问一个服务器,那么就必要用ip_hash了,ip_hash的每个请求按访问ip的hash效果分配,这样每个访客固定访问一个后端服务器,可以办理session的题目。
  1.   upstream test {
  2.     ip_hash;
  3.     server localhost:8080;
  4.     server localhost:8081;
  5.   }
复制代码
4、fair(第三方)
按后端服务器的相应时间来分配请求,相应时间短的优先分配。
  1.   upstream backend {
  2.     fair;
  3.     server localhost:8080;
  4.     server localhost:8081;
  5.   }
复制代码
5、url_hash(第三方)
按访问url的hash效果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比力有效。 在upstream中参加hash语句,server语句中不能写入weight等其他的参数,hash_method是利用的hash算法
  1.   upstream backend {
  2.     hash $request_uri;
  3.     hash_method crc32;
  4.     server localhost:8080;
  5.     server localhost:8081;
  6.   }
复制代码
以上5种负载均衡各自适用差别情况下利用,以是可以根据现实情况选择利用哪种计谋模式,不过fair和url_hash必要安装第三方模块才能利用,由于本文主要先容Nginx能做的事故,以是Nginx安装第三方模块不会再本文先容
HTTP服务器
Nginx自己也是一个静态资源的服务器,当只有静态资源的时间,就可以利用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现,首先看看Nginx做静态资源服务器
  1.   server {
  2.     listen    80;                             
  3.     server_name localhost;                        
  4.     client_max_body_size 1024M;
  5.     location / {
  6.         root  e:wwwroot;
  7.         index index.html;
  8.       }
  9.   }
复制代码
这样如果访问http://localhost 就会默认访问到E盘wwwroot目次下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现摆设。
动静分离
动静分离是让动态网站里的动态网页根据肯定规则把不变的资源和常常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操纵,这就是网站静态化处置惩罚的核心思路
  1. upstream test{
  2.     server localhost:8080;
  3.     server localhost:8081;
  4.   }  
  5.   server {
  6.     listen    80;
  7.     server_name localhost;
  8.     location / {
  9.       root  e:wwwroot;
  10.       index index.html;
  11.     }
  12.     # 所有静态请求都由nginx处理,存放目录为html
  13.     location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
  14.       root  e:wwwroot;
  15.     }
  16.     # 所有动态请求都转发给tomcat处理
  17.     location ~ .(jsp|do)$ {
  18.       proxy_pass http://test;
  19.     }
  20.     error_page  500 502 503 504 /50x.html;
  21.     location = /50x.html {
  22.       root  e:wwwroot;
  23.     }
  24.   }
复制代码
这样我们就可以吧HTML以及图片和css以及js放到wwwroot目次下,而tomcat只负责处置惩罚jsp和请求,比方当我们后缀为gif的时间,Nginx默认会从wwwroot获取到当前请求的动态图文件返回,固然这里的静态文件跟Nginx是同一台服务器,我们也可以在别的一台服务器,然后通过反向署理和负载均衡设置已往就好了,只要搞清晰了最根本的流程,很多设置就很简单了,别的localtion后面其实是一个正则表达式,以是非常灵活
正向署理
正向署理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代剃头送一个请求并指定目标(原始服务器),然后署理向原始服务器转交请求并将得到的内容返回给客户端。客户端才能利用正向署理。当你必要把你的服务器作为署理服务器的时间,可以用Nginx来实现正向署理,但是目前Nginx有一个题目,那么就是不支持HTTPS,固然我百度到过设置HTTPS的正向署理,但是到末了发现照旧署理不了,固然可能是我设置的不对,以是也希望有知道正确方法的同道们留言说明一下。
  1. resolver 114.114.114.114 8.8.8.8;
  2.   server {
  3.     resolver_timeout 5s;
  4.     listen 81;
  5.     access_log e:wwwrootproxy.access.log;
  6.     error_log  e:wwwrootproxy.error.log;
  7.     location / {
  8.       proxy_pass http://$host$request_uri;
  9.     }
  10.   }
复制代码
resolver是设置正向署理的DNS服务器,listen 是正向署理的端口,设置好了就可以在ie上面或者其他署理插件上面利用服务器ip+端标语进行署理了。
末了说两句
Nginx是支持热启动的,也就是说当我们修改设置文件后,不用关闭Nginx,就可以实现让设置收效,固然我并不知道多少人知道这个,反正我一开始并不知道,导致常常杀死了Nginx线程再来启动。。。Nginx从新读取设置的下令是
  1. nginx -s reload
复制代码
windows下面就是
  1. nginx.exe -s reload
复制代码
总结
以上所述是小编给各人先容的Nginx到底能做什么,希望对各人有所帮助,如果各人有任何疑问请给我留言,小编会实时回复各人的。在此也非常感谢各人对草根技术分享网站的支持!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作