前言:Nginx作为反向代理服务器时的特点:
简而言之,Nginx与其他反向代理服务器(如Squid)相比,特点是:
缺点: 延长了HTTP请求的处理时间,且增加了Nginx本地的用于缓存的内存和磁盘空间;
优点: 降低了上游服务器(Tomcat、Apache)的负载(并发压力),尽量把压力放在Nginx服务器上。
原因:
客户端与反向代理服务器之间的网络连接是公网,反向代理服务器与上游服务器之间的连接是内网(局域网)或者专线连接。
如果刚收到HTTP请求就立即与上游服务器建立连接,假如客户端上传1G的文件,则在此期间上游服务器要一直保持连接,这对上游服务器的并发处理能力提出了挑战。
而Nginx接收到完整的客户端文件后才与上游服务器建立连接,且内网的转发执行很快。
但是,当上游服务器一旦开始回复HTTP响应时,Nginx反向代理服务器会立刻把应答包转发给客户端。
TIPS:
反向代理服务器(reverse proxy)必须能够处理大量的并发请求(高并发高负载能力)。
“负载均衡”指的是代理服务器向上游服务器集群(upstream)转发请求时,要选择一种转发策略,尽量把请求平均的分布到每一台上游服务器上。
Nginx的负载均衡策略分为 5 种:
(1)RR(默认)(顺序)
(2)权重
(3)ip_hash(第三方)
(4)fair(第三方)
(5)url_hash(第三方)
upstream块里面定义的是上游服务器集群,块中的server配置项指定一台上游服务器的名字,可以是IP地址端口、域名、Unix句柄。
“proxy_pass”是代理通行证的意思。
这种负载均衡的策略很重要:当有大量用户同时访问服务器时,用户初始接入的那台上游服务器(Tomcat)会缓存一些客户信息,如果之后同一个用户的HTTP请求被Nginx转发到集群中的任意一台上游服务器上去,那么每一个上游服务器都要缓存同一份用户信息,这会造成服务器的内存资源浪费且管理这些缓存信息会非常困难。
在这种场景下,我们希望 , 这就是 ip_hash 的作用。
ip_hash 的工作原理:
首先根据客户端的IP地址计算出一个key,将key按照upstream集群里的上游服务器数量进行取模,然后以取模后的结果把请求转发到相应的上游服务器中。这样就确保了同一个客户端的请求只会转发到指定的上游服务器上。
注意:
(1)
(2)upstream配置块中如果有一台服务器不可用或不再使用,不能在upstream块中直接将其删除,而是要用 参数标识,以保证key取模后的结果不变,确保转发策略的一贯性,例如:
,响应时间短的优先分配。
按访问服务器URL的Hash结果来分配请求到上游服务器,使每个URL定向到同一个上游服务器上去,上游服务器为缓存时比较有效。
与ip_hash的区别:
ip_hash是按照客户端的IP地址计算Hash结果,使得每个客户端固定接入到一台上游服务器上;url_hash按照URL计算Hash结果,使访问同一个URL资源的不同客户端接入到同一台上游服务器上,这种方法当上游服务器为提供固定的资源的缓存时比较有效。
url_hash方法下同样不能在server后面接weight等关键字。
反向代理的基本配置项有以下几个:
proxy_pass可以理解为“代理通行证”,此配置项将当前请求反向代理到URL参数指定的上游服务器上去,URL可以是IP地址端口号、主机名等。
例如下例中表示proxy_pass的URL是 http://backend
注:upstream块中的上游服务器必须已经开启,否则转发到此服务器上最后会返回“502 Bad Gateway”
以上就是本篇文章【Nginx配置反向代理服务器(HTTP proxy module)】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/4019.html 行业 资讯 企业新闻 行情 企业黄页 同类资讯 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多