Nginx系列教程:HTTP Upstream Request Hash模块

ngx_http_upstream_hash_module

本模块由第三方提供,不包含在 Nginx 的源码发布版中。

upstream_hash该模块提供了简单的上游负载分配,通过散列一个可配置的变量(例如,请求URI,传入的HTTP标头或一些组合)。用法示例如下:

upstream backend {: server server1;: server server2;: hash $request_uri;}

在这里,nginx将通过散列请求的URI($ REQUEST_URI)选择Server1或Server2。

指令

[#hash hash] [#hash_method hash_method] [#hash_again hash_again]

Template:Anchor

hash

语法: hash $variable
作用域: upstream
启用上游$variable变量的散列。
目前,“服务器”指令不能执行任何参数("weight", "max_fails",等)。
Template:Anchor

hash_method

语法: hash_method [ crc32 | simple ]
默认值: simple
作用域: upstream
该哈希算法使用 “crc32”取用crc32值的最后15位,并通过服务器数量按模计算。(此行为兼容与libmemcache。)详见如下描述的“The "simple" hash algorithm”。
Template:Anchor

hash_again

语法: hash_again number
默认值: 0
作用域: upstream
如果后端连接失败时,用时间数量重新处理值,并选择不同的服务器。增加该数字以提供高可用性。
Template:Anchor

安装

该模块不是Nginx源的分布。您可以在这里下载request_hash 模块:nginx_upstream_hash-0.2.tar.gz 。

解压后,你将需要打补丁到最新的Nginx源(0.5.21版本)。运行补丁如下:

: cd nginx-0.5.21: patch -p0 < /path/to/upstream/hash/directory/nginx-0.5.21.patch

然后添加以下选项到你的Nginx ./configure命令中:

: --add-module=path/to/upstream/hash/directory

然后,正常运行"make"和"make install"。

Template:Anchor

The "simple" hash algorithm

"simple" hash algorithm是与Nginx内部哈希表中使用的相同。该功能是:

u_int ngx_hash_key(u_char *data, size_t len){: u_int i, key;: key = 0;: for (i = 0; i < len; i++) {: key *= 31; : key += data[i] ;: }: return key;}

该哈希值是被选择服务器数量的modulo'd 。一个服务器索引可以由出现在上游块的顺序来确定。

时间: 2024-07-29 07:01:00

Nginx系列教程:HTTP Upstream Request Hash模块的相关文章

Nginx系列教程:Http Access Key模块

此模块没有被包含在Nginx官方安装包中. 这个模块可以阻止所有URL中未包含合法访问令牌的访问(防盗链).访问令牌可以由访问者IP或者其它服务器变量生成,所以可以很好地控制客户端的下载行为. 配置实例: location /download {&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; accesskey             on;  accesskey_hashmethod  md5;  access

Nginx系列教程:HTTP Real IP模块

HttpRealIpModule模块简介 这个模块允许从请求Headers里更改客户端的IP地址值(例如 实时的转发). 它是有用的,如果nginx后面有多层http://www.aliyun.com/zixun/aggregation/13996.html">负载均衡/代理,nginx转发请求时将会添加添加客户端的IP头. 这个模块是不是建立在默认情况下,需要这样启用它 --with-http_realip_module 用户评论:"你将建立一个值得信赖的代理列表(见下文)和客

Nginx系列教程:HTTP Stub Status模块

ngx_http_stub_status_module 这个模块能够获取Nginx自上次启动以来的工作状态 此模块非核心模块,需要在编译的时候手动添加编译参数 --with-http_stub_status_module __配置说明__ location /nginx_status {: # copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/: stub_status on;: access

Nginx系列教程:HTTP Secure Link模块

此模块计算和检查要求所需的安全链接网址.此模块默认情况下不会被编译启用,要启用它请使用指令 --with-http_secure_link_module 参与编译安装 nginx .注意:此模块仅在 nginx 版本为0.7.18或更高时才被支持. 配置实例: location /p/ { location ~ ^/p/(?<secure>[\w\-=]+,\d+)(?<file>/.+)$ {  secure_link $secure; secure_link_md5 $secu

Nginx系列教程:HTTP Auth Basic模块

ngx_http_auth_basic_module 该模块可以使你使用用户名和密码基于 HTTP 基本认证方法来保护你的站点或其部分内容. __实例配置__ location / {: auth_basic "Restricted";: auth_basic_ user_file conf/htpasswd;} 指令 [#auth_basic auth_basic] [#auth_basic_user_file auth_basic_user_file] auth_basic 语法:

Nginx系列教程:HTTP Empty GIF模块

ngx_http_empty_gif_module 本模块在内存中常驻了一个 1x1 的透明 GIF 图像,可以被非常快速的调用. 示例: location = /_.gif {: empty_gif;} 指令 [#empty_gif empty_gif] empty_gif 语法: empty_gif 默认值: n/a 作用域 location

Nginx系列教程:nginx_module_development模块开发

好像这是唯一的一份模块开发文档.. 以下简称 guide 读代码!! nginx 程序启动 把 nginx.conf 读入内存 处理模块 ngx_http_module_t 定义的 configuration. 应该是如下的执行顺序 pre create_main_conf 执行 ngx_command_t 里面定义的函数. 可以视为 init_main_conf 的自动处理部分 init_main_conf ... postconfig listen fork 子进程(真正的服务器进程 mas

Struts 2.1.6精简实例系列教程(2):用户登录模块的实现

用户登录几乎是每一个Web系统的必需模块,本期教程就通过用户登录模块来讲解Struts2.1.6的Action和Result的Annotation配置. 上期的Struts 2.1.6 精简实例系列教程(1):环境的搭建与HelloSimple中,我们建的package名为"cn.simple.action",这些包名有一个规则的,只要包含 "action,actions,struts,struts2"都会默认被扫描到为Action类,也就是说,我们只要配置了如 &

Nginx系列教程:HW-Loadbalancer禁用错误日志记录

一些硬件负载平衡设备例如http://www.aliyun.com/zixun/aggregation/15069.html">Cisco CSS和BigIP产品测试与SYN-ACK-RST后端设备.此行为将导致一个nginx的400错误. 使用GEO模块和if-Statement,你可以省略这些条目: http { geo $lb { default 0; 10.1.1.1/32 1; # LB IPs 10.1.1.2/32 1; }  # ...  server { # ... ac