安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Nginx

9月5日 飞虹谷投稿
  一、代理服务
  比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我。一)正向代理
  正向代理,就是代理服务器为客户端代理,也就是说,服务器并不知道真实的客户端是谁,而是通过代理服务器把请求发送给真实的服务器。比如,通过公司网络访问外网百度,那么公司的代理服务器就会代理你的主机,访问百度网站。百度服务器无法获得你个人的真实主机ip。
  就像上图展示的那样。web1、web2就是你在公司内的个人主机ip,然后通过公司的Nginx代理服务器,访问外部网络。
  语法:Syntax:proxypassURLDefault:Context:server,location
  实践:
  删除之前的配置,然后我们加下正向代理的配置:resolver8。8。8。8;谷歌的域名解析地址location{httphost要访问的主机名requesturi请求路径proxypasshttp:}
  这样,Nginx的正向代理配置其实就ok了,哦对,别忘了重载Nginx服务器。为了我们可以用本地测试,还需要一些额外的修改。Windows系统,修改下本机的hosts文件,地址在:C:WindowsSystem32driversetc。里面有个hosts,通过编辑器打开,添加如下内容:ip(你服务器的ip)(空格)域名(随便一个域名)
  我的添加完了之后是这样的:
  然后,你可以正常访问百度,或者其他域名地址,或者也可以通过curl来访问。但是这样我们实际上比较无感,所以我们来看下Nginx日志,日志在varlogNginxaccess。log中。二)反向代理
  反向代理,简单来说就是代理服务器代理的是服务器,客户端并不知道真正的服务器是什么。
  Nginx配置如下:
  locationapi{proxypasshttp:localhost:3000;重定向proxysetheaderH向后传递头信息proxysetheaderXRealIP把真实IP传给应用服务器proxyconnecttimeout30;默认超时时间proxysendtimeout60;发送超时proxyreadtimeout60;读取超时在proxybuffering开启的情况下,Nginx将会尽可能的读取所有的upstream端传输的数据到buffer,直到proxybuffers设置的所有buffer们被写满或者数据被读取完(EOF)proxybuffers4128k;proxybuffers由缓冲区数量和缓冲区大小组成的。总的大小为numbersizeproxybusybufferssize256k;proxybusybufferssize不是独立的空间,他是proxybuffers和proxybuffersize的一部分。Nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxybusybufferssize来控制的,建议为proxybuffers中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就写到磁盘的临时文件中。proxybuffersize32k;用来存储upstream端response的headerproxymaxtempfilesize256k;response的内容很大的话,Nginx会接收并把他们写入到tempfile里去,大小由proxymaxtempfilesize控制。如果busy的buffer传输完了会从tempfile里面接着读数据,直到传输完毕。}
  然后需要我们在服务器上安装一下node,简单来说通过下载node官网的linux版node的二进制包,通过ftp传输到服务器。然后解压缩node包,然后配置node环境变量即可。这个就不多说了,大家可以百度一下。
  然后我们在服务器新建一个node的http服务,端口号3000、4000、5000,对,创建三个文件。是在服务器上哦,实际上跟在本地没啥区别。
  然后我们通过浏览器,你的ipapixxx就可以代理到3000端口的服务了。哦对,别忘了在服务器启动你的node服务。二、负载均衡
  我们先来看张图吧:
  使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。
  那么下面,我们来看下,如何通过Nginx服务器,配置集群。首先,我们需要在Nginx服务器,通过不同的端口号,创建几个node服务。node服务的代码类似这样:
  varhttprequire(http);varserverhttp。createServer(function(request,response){response。end(server3000);});server。listen(3000,function(){console。log(HTTP服务器启动中,端口:3000);});
  然后,Nginx中可以这样配置:
  http{upstreamzhufeng{server127。0。0。1:3000weight10;server127。0。0。1:4000;server127。0。0。1:5000;}server{location{proxypasshttp:}}}
  然后呢,安装一下pm2:yuminstallpm2g
  如果太慢的话,可以试试淘宝源。这里就不说怎么配置了哦。然后安装好pm2后,通过pm2启动各个node服务。pm2是一个node应用的进程管理器。
  然后,可以通过以下命令来启动和查看node服务进程:启动node服务pm2startxxx。jsnamexxx查看当前服务pm2list
  后端服务器调试状态:
  状态
  描述
  down
  当前的服务器不参与负载均衡
  backup
  当其它节点都无法使用时的备份的服务器
  maxfails
  允许请求失败的次数,到达最大次数就会休眠
  failtimeout
  经过maxfails失败后,服务暂停的时间,默认10秒
  maxconns
  限制每个server最大的接收的连接数,性能高的服务器可以连接数多一些
  例子:upstreamwebserver{serverlocalhost:3000serverlocalhost:4000serverlocalhost:5000maxfails1failtimeout10s;}
  分配方式:
  类型
  种类
  轮询(默认)
  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
  weight(加权轮询)
  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
  iphash
  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
  leastconn
  哪个机器上连接数少就分发给谁
  urlhash(第三方)
  按访问的URL地址来分配请求,每个URL都定向到同一个后端服务器上(缓存)
  fair(第三方)
  按后端服务器的响应时间来分配请求,响应时间短的优先分配
  正定义hash
  hash自定义key
  例子:
  upstreamwebserver{server127。0。0。1:3000;}upstreamwebserver{server127。0。0。1:3000;}upstreamwebserver{server127。0。0。1:3000;}upstreamwebserver{server127。0。0。1:3000;}upstreamwebserver{server127。0。0。1:3000;}
  三、其他一)缓存
  首先啊,缓存有很多种,比如之前学过的浏览器缓存,还有应用服务器缓存,代理缓存,客户端缓存等等等等。我们可以在Nginx中使用prxoycache来设置代理缓存。http{缓存路径目录层级缓存空间名称和大小失效时间为7天最大容量为10gproxycachepathdataNginxcachelevels1:2keyszonecache:100minactive60mmaxsize10g;}
  稍微复杂点的方式如下:
  if(requesturicache(loginlogout)){setnocache1;}location{proxypasshttp:}locationcache{proxycachevalid20020630430130260m;对哪些状态码缓存,过期时间为60分钟缓存的维度proxysetheaderHosthost:设置头proxysetheaderXRealIP设置头proxysetheaderXForwardedF设置头proxypasshttp:127。0。0。1:6000;}
  然后呢,上面的各个字段的含义如下:
  键值
  含义
  proxycache
  使用名为cache的对应缓存配置
  proxycachevalid20020630430130210d;
  对httpcode为200的缓存10天
  proxycachekeyuri
  定义缓存唯一key,通过唯一key来进行hash存取
  proxysetheader
  自定义httpheader头,用于发送给后端真实服务器
  proxypass
  指代理后转发的路径,注意是否需要最后的二)location
  它的使用其实就是正则表达式,但是语法规则会有些特性,正则我就不在这里多说,咱们直接看下location的语法:location仅匹配URI,忽略参数前缀字符串常规精确匹配匹配上后则不再进行正则表达式的匹配正则表达式大小写敏感的正则表达式匹配忽略大小写的正则表达式匹配内部调转用于内部跳转的命名locationSyntaxlocation〔〕uri{。。。}locationname{。。。}defaultContextserver,location
  匹配的优先级,按照上面的顺序,从上到下,最上面的优先级最高,我们来看个实际的例子:
  locationT1{return200匹配到第一个正则表达式;}locationT1(w){return200匹配到最长的正则表达式;}locationT1{return200停止后续的正则表达式匹配;}locationT1T2{return200最长的前缀表达式匹配;}locationT1{return200前缀表达式匹配;}locationT1{return200精确匹配;}
  T1精确匹配T1停止后续的正则表达式匹配T1T2匹配到最长的正则表达式T1T2最长的前缀表达式匹配t1T2匹配到最长的正则表达式三)rewrite
  可以实现URI的重写和重定向,它的用处有很多,常用于URL页面的跳转,兼容旧版本,SEO优化(伪静态),维护(后台维护、流量转发),安全(伪静态)等,它的语法是这样的:syntax:rewriteregexreplacement〔flag〕Default:Context:server,location,if如果正则表达式(regex)匹配到了请求的URI(requestURI),这个URI会被后面的replacement替换rewrite的定向会根据他们在配置文件中出现的顺序依次执行通过使用flag可以终止定向后进一步的处理
  一个例子:rewriteusers(。)show?user1?
  flag,标志位是标识规则对应的类型。
  flag
  含义
  last
  先匹配自己的location,然后通过rewrite规则新建一个请求再次请求服务端
  break
  先匹配自己的location,然后生命周期会在当前的location结束,不再进行后续的匹配
  redirect
  返回302昨时重定向,以后还会请求这个服务器
  permanent
  返回301永久重定向,以后会直接请求永久重定向后的域名1)last结束当前的请求处理,用替换后的URI重新匹配location可理解为重写(rewrite)后,发起了一个新请求,进入server模块,匹配location如果重新匹配循环的次数超过10次,Nginx会返回500错误返回302http状态码浏览器地址栏显示重定向后的url2)break结束当前的请求处理,使用当前资源,不再执行location里余下的语句返回302http状态码浏览器地址栏显示重定向后的url3)redirect临时跳转,返回302http状态码0浏览器地址栏显示重地向后的url4)permanent永久跳转,返回301http状态码;浏览器地址栏显示重定向后的url
  例子如下:
  locationbreak{}locationlast{}locationtest{return200{code:0,msg:success};}locationredirect{rewriteredirecthttp:www。baidu。}locationpermanent{rewritepermanenthttp:www。baidu。}
  可以通过curl来测试一下:curlhttp:115。29。148。6breaktestcurlhttp:115。29。148。6last{code:0,msg:success}curlvLhttp:115。29。148。6redirectcurlvLhttp:115。29。148。6permanent
  站在巨人的肩膀上,希望我可以看的更远。
  来源:https:www。cnblogs。comzakingp14999350。html
投诉 评论 转载

全球最大独角兽诞生,超蚂蚁集团和马斯克的SpaceX,估值达在商界从来就不缺传奇。在人人喊着创业难、创业九死一生的今天,依然不断有企业出生、发展再到壮大,然后迈出国门。在世界各个国家中成长起来的企业种类繁多,从经济发展的角度来看,企业的……开发一个网站,只用cssHTMLJavaScript够用吗?那要看你做一个什么样级别的网站,如果个人学习、很小型纯企业宣传展示类的网站问题不大,但如果要达到商用的水平,和用户有一些交互,甚至要开展业务的话,那是不够的。因为css、……西媒评述中国稳步推进科技自立自强西班牙《世界报》网站12月20日发表一篇观察报道,题为《从中国制造到中国创造中国化身世界最大科技强国的伟大计划》。全文摘编如下:量子物理学家卡洛斯纳瓦雷特本略克过去从未想……木星迎来新访客!欧空局将发射JUICE探测器寻找木星上的生命近些年,随着现代航天科技的迅猛发展,人类加快了探索宇宙的步伐,许多国家竞相发射航天器来寻找外星生命!比如这些年来最热门的火星探索,还有人类对月球探测的热度也在回升!但在太……Nginx一、代理服务比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务……Go实现Nginx加权轮询算法一,Nginx负载均衡的轮询(roundrobin)在说加权轮询之前我们先来简单的说一下轮询转自:https:segmentfault。coma1190000039……融资丨微岩医学完成亿元A轮融资,mNGS全流程自动化解决方案创业邦获悉,近日,微岩医学科技(北京)有限公司(以下简称:微岩医学)宣布完成亿元A轮融资,由上海联和投资有限公司(以下简称:上海联和)独家领投。本轮融资后,微岩医学将加快中国病……移远通信发布5G系列模组新品,将加速5GSA终端商用上海2021年5月21日美通社全球领先的物联网解决方案供应商移远通信今日宣布,正式推出支持5G独立组网(SA)模式的模组RG500S系列和RM500S系列。这两个系列的5G模组……华为全屋智能全场景春季发布会正式举行,开启未来智慧家2022年3月16日,2022华为全屋智能及全场景新品春季发布会正式举行。发布会上,华为推出了新一代华为全屋智能解决方案,带来全屋智能的重磅升级以及空间交互的革新体验,开启智慧……构建汽车金融全新数字化服务生态圈如何抓住新一轮数字化发展机遇,加强自主创新,适应新零售场景下快速涌现的新业态与新模式,在促进汽车金融公司高质量转型的同时切实推动汽车产业发展,成为当前汽车金融公司重点研究的课题……华为突然上架5G新旗舰,鸿蒙OSIP68防水麒麟芯,仅售64不同手机厂商发布新机的热度是不一样的,在国内手机厂商中,华为和小米发布新机的热度属于第一梯队,关注的人非常多,不过华为和小米旗下不同手机的热度也有区别,但毫无疑问,现如今华为5……诺基亚新8250渲染图1。85寸背屏5枚蔡司镜头,啃下苹果重诺基亚当年曾经创造了不少街机,比如曾经十分经典的诺基亚8250,时尚的外观和经典的造型让消费者都希望能够拥有一部,不过这种经典的机型设计,现在是再也看不到了,因为诺基亚品牌已经……
华为很无奈,余承东亲自致歉树根互联发布云澈安全解决方案,打造工业互联网安全新底座拥锂为王时代的锂王之争系列二从锂资源品质再论天齐锂业的价值华为前太子李一男,自立门户对抗任正非,45岁成阶下囚iPhone13系列真香?浅谈淘宝,京东,拼多多的区别随着微信等移动支付的发展,越来越多老人菜贩失去了生存手段称霸印尼市场!中国手机在印尼有多强现在的4G手机,真的过时了么?年底购机避坑指南牢记买手机的三不碰原则,别再花冤枉钱了山东省级科技创新发展资金达到145个亿重点做到三个聚焦强化评测华为watch3搭载鸿蒙系统强势来袭,2599元领略一表

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利