玩转Nginx篇二【IP哈希和URL哈希】

这篇具有很好参考价值的文章主要介绍了玩转Nginx篇二【IP哈希和URL哈希】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IP Hash

将来自相同 IP 地址的请求分配给同一台后端服务器,实现会话保持。

配置如下

    upstream polling {
		ip_hash; 
		server 192.168.3.99:8881  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8882  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8883  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8884  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8885  weight=1 max_fails=3 fail_timeout=30s;
	}

启动nginx后使用篇一的代码和服务跑1000轮,发现服务都被分配给Server#2

nginx ip_hash,Nginx专栏,nginx

再次跑1000轮测试,发现服务还是被分配给Server#2

nginx ip_hash,Nginx专栏,nginx

说明相同来源的ip访问请求均会被分配至同一机器提供服务,IP哈希(IP Hash)的负载均衡方法通常在需要会话保持(Session Affinity)的应用中使用得比较多,其中有状态的连接需要保持到同一台后端服务器。

请注意,IP哈希并不是适用于所有情况的负载均衡方法,因为它可能会导致服务器不均匀负载。在使用IP哈希时,必须考虑服务器的性能和容量,以确保它们可以处理分配给它们的所有连接。此外,如果客户端IP地址在应用程序中经常变化,IP哈希可能不是一个有效的选择。

如果停掉Server#2的机器会怎么样呢 

我们停掉Server#2后在在使用代码请求nginx

nginx ip_hash,Nginx专栏,nginx

nginx ip_hash,Nginx专栏,nginx

nginx ip_hash,Nginx专栏,nginx

停掉Server#2后跑2轮请求测试,发现服务都被分配给了Server#5,也就说使用ip Hash策略也会剔除无响应的server,但是这个时候我们将Server#2上线,看一下还会不会上第一次一样所有的服务都被分配给Server#2

nginx ip_hash,Nginx专栏,nginx

上线Server#2后,所有的请求都被分配给了Server#2,和我们第一次的结果一样。

IP Hash分配的原理

IP哈希(IP Hash)的分配原理是将客户端的IP地址作为输入,通过哈希函数计算一个值,然后使用这个值来决定将请求分配给哪台后端服务器。以下是IP哈希的基本分配原理:

  1. 客户端IP地址提取:当一个请求到达负载均衡器(如Nginx),它会提取请求的客户端IP地址。

  2. 哈希计算:使用哈希函数,将客户端IP地址转化为一个固定范围的哈希值。这个哈希值通常是一个整数。

  3. 哈希值映射到后端服务器:将哈希值映射到可用的后端服务器。通常,哈希值与后端服务器的数量相除并取余数,以确定将请求路由到哪台服务器。

    例如,如果有3台后端服务器,哈希值为12,则计算:12 % 3 = 0,那么请求将路由到第一台后端服务器。

  4. 请求路由:根据计算的结果,请求被路由到特定的后端服务器,然后由该服务器来处理请求。

  5. 会话保持:对于会话保持,相同客户端IP地址的后续请求将继续被路由到同一台后端服务器,以保持用户的会话状态。

URL Hash

URL哈希的分配原理是将请求的URL作为输入,通过哈希函数计算一个值,然后使用这个值来决定将请求分配给哪台后端服务器。

配置如下

	upstream polling {
		hash $request_uri;
		server 192.168.3.99:8881  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8882  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8883  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8884  weight=1 max_fails=3 fail_timeout=30s;
		server 192.168.3.99:8885  weight=1 max_fails=3 fail_timeout=30s;
	}

启动nginx后使用篇一的代码和服务跑1000轮,发现服务都被分配给Server#4

nginx ip_hash,Nginx专栏,nginx

URL Hash分配原理

URL哈希的分配原理是将请求的URL作为输入,通过哈希函数计算一个值,然后使用这个值来决定将请求分配给哪台后端服务器。

  1. 提取URL:当一个请求到达负载均衡器(如Nginx),它会提取请求的URL。

  2. 哈希计算:使用哈希函数,将请求的URL转化为一个固定范围的哈希值。这个哈希值通常是一个整数。

  3. 哈希值映射到后端服务器:将哈希值映射到可用的后端服务器。通常,哈希值与后端服务器的数量相除并取余数,以确定将请求路由到哪台服务器。

    例如,如果有3台后端服务器,哈希值为12,则计算:12 % 3 = 0,那么请求将路由到第一台后端服务器。

  4. 请求路由:根据计算的结果,请求被路由到特定的后端服务器,然后由该服务器来处理请求。

URL哈希的适用场景通常包括以下情况:

  1. 缓存服务器:当使用缓存服务器(如反向代理缓存)时,URL哈希可以用于确保相同URL的请求始终被路由到同一台缓存服务器。这有助于提高缓存的效率,因为相同的资源只需在一台服务器上缓存一次。

  2. 静态资源分发:在Web应用中,通常有大量的静态资源(如图片、CSS和JavaScript文件)。使用URL哈希可以确保这些资源被均匀地分发到不同的后端服务器,以减轻负载。

  3. 内容分发网络(CDN):CDN通常使用URL哈希来确定哪个CDN节点将提供特定的内容。这有助于加速内容的分发,并确保内容尽可能接近终端用户。

  4. 分布式文件系统:在分布式文件系统中,URL哈希可以用于确定哪个节点将存储或提供特定文件。这有助于均衡文件系统的负载。

  5. API网关:在微服务架构中,API网关可以使用URL哈希来确保相同API请求的流量被路由到同一组后端微服务实例,以维护会话一致性。

URL哈希的优点是它可以提高负载均衡的粒度,确保相同URL的请求被路由到同一台服务器。这对于某些应用程序非常有用,但也需要注意,如果URL分布不均匀,会导致负载不均衡。因此,在使用URL哈希时需要仔细考虑应用程序的访问模式和URL分布。文章来源地址https://www.toymoban.com/news/detail-762962.html

到了这里,关于玩转Nginx篇二【IP哈希和URL哈希】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx一般轮询、加权轮询、ip_hash等负载均衡模式配置介绍

    目录 一.负载均衡含义简介 二.nginx负载均衡配置方式 准备三台设备: 2.190均衡服务器,2.191web服务器1,2.160web服务器2,三台设备均安装nginx,两台web服务器均有网页内容 upstream内参数 1.一般轮询负载均衡 (1)含义 (2)配置 (3)测试 2.加权轮询负载均衡 (1)含义 (2)配置

    2024年02月13日
    浏览(47)
  • nginx负载均衡简介,一般轮询、加权轮询、ip_hash等负载均衡模式配置介绍

    目录 一.负载均衡含义简介 二.nginx负载均衡配置方式 准备三台设备: 2.190均衡服务器,2.191web服务器1,2.160web服务器2,三台设备均安装nginx,两台web服务器均有网页内容 upstream内参数 1.一般轮询负载均衡 (1)含义 (2)配置 (3)测试 2.加权轮询负载均衡 (1)含义 (2)配置

    2024年02月10日
    浏览(32)
  • Nginx实例:限制目录和URL以及IP访问控制

    如果我们深入研究Nginx的功能还是蛮有意思的,比如我们前面有聊到UA可以控制爬虫限制和放行访问。我们也可以利用Nginx进行控制和限制URL、目录,以及IP地址的访问。比如有一些运维的时候,需要用到屏蔽某些IP地址,或者是我们某个目录只能某个IP地址访问或者限制访问。

    2024年02月12日
    浏览(54)
  • nginx禁用ip方法

    在Nginx中禁用特定IP的方法有以下几种: 1、使用 deny 指令:在Nginx的配置文件中,可以使用 deny 指令来禁止特定IP的访问。例如,要禁止IP地址为192.168.1.100的访问,可以在配置文件中添加以下内容: 这样,当有请求来自IP地址为192.168.1.100时,Nginx将返回403 Forbidden错误。 2、使用

    2024年02月14日
    浏览(24)
  • Nginx配置IP拦截

    最近百家饭团队开源了一个Nginx日志分析工具APIcat,这周在生成报告的基础上,实现了基于Nginx的自动拦截防护,正好研究了一下Nginx配置IP拦截的配置 nginx配置ip拦截基本是通过deny和allow两个配置来实现的。可以配置单ip的拦截放行,也可以配置网段的拦截放行,比如:

    2023年04月08日
    浏览(23)
  • Nginx禁止某个IP或者IP段访问的方法

    当Nginx代理了很多网站时,我们想让一部分人能访问,一部分人访问不了;那么我们可以来到每个网站的Nginx代理配置文件,针对某个网站单独设置:禁止或允许IP或IP段访问网站。 例:配置文件 如果想禁止某个准确的IP,deny 后直接加IP(deny xxx.xxx.xxx.xxx;) 即可。 上面的配置

    2024年02月11日
    浏览(38)
  • nginx配置获取真实ip

    要想在应用中获取到真实IP,取决于各个转发节点的传递配置, 第一、要确定客户端使用哪个请求头传递IP地址 第二、第一转发点, proxy_set_header field value value是变量值,来源于请求方 field是变量名,是要发给下一站的变量 注意这个顺序,set设置要发往下一站的变量,紧接着

    2024年02月11日
    浏览(35)
  • Nginx实现IP黑白名单

    Nginx做黑白名单机制,主要是通过allow、deny配置项来实现: 要同时屏蔽/开放多个IP访问时,如果所有IP全部写在nginx.conf文件中定然是不显示的,这种方式比较冗余,那么可以新建两个文件BlockIP.conf、WhiteIP.conf: 分别将要禁止/开放的IP添加到对应的文件后,可以再将这两个文件

    2024年02月12日
    浏览(87)
  • nginx 映射ip端口服务

    笔者只对外开放了一个ip端口,但实际使用不止一个端口,那么需要把ip端口映射出来。这里使用Nginx来映射ip端口。比如将前端系统的ip端口映射出去了,还需要后台的ip端口,这样前后端才能结合使用 通过后台服务名(dwiot-cloud)来分发到后台服务ip端口,这样可以直接通过

    2024年02月11日
    浏览(25)
  • Nginx 禁止IP访问 只允许域名访问,以及Nginx防盗链设置

           我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了。今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网。        下面我们就先看看Ngi

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包