Nginx最全操作nginx反向代理(5)
将NGINX配置为HTTP和其他协议的反向代理,支持修改请求标头和微调的响应缓冲。
本文介绍代理服务器的基本配置。您将学习如何通过不同的协议将请求从NGINX传递到代理服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应的缓冲。介绍
代理通常用于在多个服务器之间分配负载,无缝显示来自不同网站的内容,或通过HTTP以外的协议将处理请求传递给应用程序服务器。将请求传递给代理服务器
当NGINX代理请求时,它会将请求发送到指定的代理服务器,获取响应,然后将请求发送回客户端。可以使用指定的协议将请求代理到HTTP服务器(另一个NGINX服务器或任何其他服务器)或非HTTP服务器(可以运行使用特定框架开发的应用程序,例如PHP或Python)。支持的协议包括FastCGI、uwsgi、SCGI和memcached。
要将请求传递给HTTP代理服务器,需要在location中指定proxypass指令。例如:locationsomepath{proxypasshttp:www。example。comlink;}
此示例配置导致将在此位置处理的所有请求传递到指定地址的代理服务器。此地址可以指定为域名或者IP地址。该地址还可能包括一个端口:location。php{proxypasshttp:127。0。0。1:8000;}
注意,在上面的第一个例子中,代理的服务器的地址后面是一个URI,link。如果URI与地址一起指定,它将替换请求URI中与location参数匹配的部分。例如,这里带有somepathpage。htmlURI的请求将被代理到http:www。example。comlinkpage。html。如果指定的地址没有问题URI,或者无法确定要替换的URI部分,则传递完整的请求URI(可能已修改)。
要将请求传递给非HTTP代理服务器,pass应使用适当的指令:fastcgipass将请求传递给FastCGI服务器uwsgipass将请求传递给uwsgi服务器scgipass将请求传递给SCGI服务器memcachedpass将请求传递给memcached服务器
请注意,在这些情况下,指定地址的规则可能不同。您可能还需要将其他参数传递给服务器(有关详细信息,请参阅参考文档)。
proxypass指令也可以指向一组命名的服务器。在这种情况下,请求根据指定的方法在组中的服务器之间分发。
传递请求标头
默认情况下,NGINX重新定义代理请求中的两个header字段,Host和Connection,并消除值为空字符串的header字段。Host设置为proxyhost变量,Connection设置为close。
要更改这些设置以及修改其他标头字段,请使用proxysetheader指令。该指令可以在某个位置或更高位置指定。它也可以在特定的服务器上下文或http块中指定。例如:locationsomepath{proxysetheaderHosthost;proxysetheaderXRealIPremoteaddr;proxypasshttp:localhost:8000;}
在此配置中,主机字段设置为host变量。
要防止标头字段被传递到代理服务器,请将其设置为空字符串,如下所示:locationsomepath{proxysetheaderAcceptEncoding;proxypasshttp:localhost:8000;}
配置缓冲区
默认情况下,NGINX缓冲来自代理服务器的响应。响应存储在内部缓冲区中,并且在收到整个响应之前不会发送到客户端。缓冲有助于优化慢速客户端的性能,如果响应从NGINX同步传递到客户端,这可能会浪费代理服务器的时间。但是,当启用缓冲时,NGINX允许代理服务器快速处理响应,而NGINX存储响应的时间与客户端下载它们所需的时间一样长。
负责启用和禁用缓冲的指令是proxybuffering。默认情况下,它设置为on并启用缓冲器。
该proxybuffers指令控制规模和分配的请求缓冲区的数目。来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由proxybuffersize指令设置。这部分通常包含一个相对较小的响应头,并且可以做得比其余响应的缓冲区小。
在以下示例中,缓冲区的默认数量增加了,并且响应的第一部分的缓冲区大小小于默认值。locationsomepath{proxybuffers164k;proxybuffersize2k;proxypasshttp:localhost:8000;}
如果禁用缓冲,则在从代理服务器接收响应的同时将响应同步发送到客户端。对于需要尽快开始接收响应的快速交互客户端,此行为可能是可取的。
要在特定位置禁用缓冲,请将proxybuffering指令放在带有参数的位置off,如下所示:locationsomepath{proxybufferingoff;proxypasshttp:localhost:8000;}
在这种情况下,NGINX仅使用proxybuffersize配置的缓冲区来存储响应的当前部分。
反向代理的一个常见用途是提供负载平衡。阅读免费的选择软件负载均衡器的五个理由电子书,了解如何通过快速部署来提高功能、性能和专注于您的应用程序。
选择传出IP地址
如果您的代理服务器有多个网络接口,有时您可能需要选择特定的源IP地址连接到代理服务器或上游。如果NGINX后面的代理服务器配置为接受来自特定IP网络或IP地址范围的连接,这可能很有用。
指定proxybind指令和必要网络接口的IP地址:locationapp1{proxybind127。0。0。1;proxypasshttp:example。comapp1;}locationapp2{proxybind127。0。0。2;proxypasshttp:example。comapp2;}
IP地址也可以用变量指定。例如,serveraddr变量传递接受请求的网络接口的IP地址:locationapp3{proxybindserveraddr;proxypasshttp:example。comapp3;}
简单来说,把百度首页代理到test路径,同时把java代理到testapi,配置如下:server{listen80;user访问ip:80test下的所有路径代理到百度首页locationtest{proxypasshttps:baidu。com;}所有api下的接口访问都代理到本地的81端口例如,本地运行的java服务的端口是81,接口都是以testapi开头locationtestapi{proxypasshttp:127。0。0。1:81;}}
参考链接:https:docs。nginx。comnginxadminguidewebserverreverseproxy
欢迎大家提出不一样的观点,我们一起讨论,
我是辣个男人,一个运维人。
当液晶拼接屏出现花屏问题时该如何解决如今,液晶拼接屏作为当前市场上应用非常火热的大屏幕电子显示产品,应用领域越发广阔,被人们纷纷应用在各个领域的诸多场所,为人们解决了很多问题。既然是电子产品,液晶拼接屏必然……
2020年中国移动应用趋势洞察白皮书应用体验变革篇核心摘要:应用载体形态变革:1)移动应用行业环境变化及科学技术进步,催生了轻量化应用。凭借免下载、转化高、省内存等优点,轻量化应用逐步形成与原生应用互补共生的发展局……
加冕设计界奥斯卡!恒大如何步步为营造好车?恒大汽车的产品创新力再获认可。近日,恒驰1凭借惊艳造型,摘得2021年德国红点设计大奖。分析认为,恒驰首次参评便斩获大奖,展现了恒大汽车在汽车造型设计领域的强大实力。近年……
微信称霸天下晚上想给孩子买盒药,骑个小黄车到附近药店买,结果没有卖的,于是想起之前用的叮当卖药,半夜里买药能28分钟送到,比较方便,就打开小程序搜索,一看有药,就想赶紧下单直接送药上门,结……
Java中常见的20个错误及解决方案1。类定义未找到错误java。lang。NoClassDefFoundError。原因分析由于该程序调用到的JAVA类文件没有正确上传。JAVA类文件已经上传……
酷迪熊从品质到服务,小家电增长新通路电商化启示录:始于颜值,专注于服务。作者:贾诗卉一个月内不约酒,这是国庆之后肖仁志推掉的第六个饭局。最近肖仁志很忙,但忙有所得。工厂喜迁新居,5500平方米的……
过去10年,电动汽车价格在中国下降47,但在美国却上涨了38尽管我们都习惯了认为国外购车更加便宜,但在电动汽车市场,过去10年来,中美两国的价格变化却呈现出让我们感到有些惊讶的变化。那就是,美国市场的电动汽车价格不降反升,而中国市场的电……
RedmiNote11有惊喜,最大亮点曝光万众瞩目的RedmiNote11将在2021年10月28日19:00发布,这个月以来,官方陆陆续续发布不少配置和功能,吸引了很多米粉的关注。其中几大亮点值得我们一起来看看!……
B站不放过年轻人的暑假上一个暑假,B站砸下重金收获了月活2亿;这个暑假,B站会错过吗?撰文蓝洞商业赵卫卫一个是年末,一个是暑期。每年年末,B站都有广为人知的跨年晚会最美的夜,每年暑……
鸿蒙系统将至,你的手机更新了吗?华为的荣耀V10用了好多年了,电池也没换过,依然坚挺,除了存储空间不太够,一直都很好用。系统升级到emui9之后很久没有更新了,之前大部分新出手机都升级emui10,荣耀V10……
网友买的6寸电脑更换散热硅脂,重新开机之后效果惊呆了GPDWIN2游戏掌机,网友购买了很久了,最近发现散热没有刚开始那么给力了,决定拆机看看什么情况。打开机器的底壳发现内部电池占了三分之二的空间,其余的处理器内存wifi等……
美国网件公司(NETGEAR)推出全新夜鹰RAXE500三频中国4月21日美国网件公司(NETGEAR)(NASDAQ代码:NTGR),作为全球领先的家用和商用先进联网产品供应商,在CES2021期间,NETGEAR推出了世界上首款Wi……