FAQ

Page Discussion History

Difference between revisions of "HttpUpstreamRequestHashModule"

m (moved NginxHttpUpstreamRequestHashModule to HttpUpstreamRequestHashModule: Removing Nginx prefix from page titles)
 
(Make the obsolescence note bigger)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
= ngx_http_upstream_hash_module =
 
= ngx_http_upstream_hash_module =
 +
 +
<big>'''IMPORTANT: This module is obsolete as of Nginx 1.7.2. Please use the new built-in [http://nginx.org/r/hash hash] directive instead.'''
 +
</big>
  
 
''This module is not distributed with the Nginx source. Installation instructions are [[#Installation|Installation]] below.''
 
''This module is not distributed with the Nginx source. Installation instructions are [[#Installation|Installation]] below.''
Line 37: Line 40:
 
== Installation ==
 
== Installation ==
  
This module is not distributed with the Nginx source. You can download the request_hash module here: [[File:Nginx_upstream_hash-0.3.1.tar.gz]]
+
This module is not distributed with the Nginx source. You can download the request_hash module from [https://github.com/evanmiller/nginx_upstream_hash Github] or here: [[File:Nginx_upstream_hash-0.3.1.tar.gz]]
  
 
After extracting, you will need to patch the latest Nginx source (0.7.62 as of this writing). Run patch like this:
 
After extracting, you will need to patch the latest Nginx source (0.7.62 as of this writing). Run patch like this:

Latest revision as of 19:51, 16 August 2014

Contents

ngx_http_upstream_hash_module

IMPORTANT: This module is obsolete as of Nginx 1.7.2. Please use the new built-in hash directive instead.

This module is not distributed with the Nginx source. Installation instructions are Installation below.

The upstream_hash module provides simple upstream load distribution by hashing a configurable variable (e.g., the request URI, incoming HTTP headers, or some combination). Example usage:

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

Here, Nginx will choose server1 or server2 by hashing the request URI ($request_uri).

Directives

hash

syntax hash $variable

context upstream

Enables upstream hashing of $variable.

When present, the "server" directives cannot take any arguments ("weight", "max_fails", etc.).

hash_again

syntax hash_again number

default 0

context upstream

Number of times to rehash the value and choose a different server if the backend connection fails. Increase this number to provide high availability.

Installation

This module is not distributed with the Nginx source. You can download the request_hash module from Github or here: File:Nginx upstream hash-0.3.1.tar.gz

After extracting, you will need to patch the latest Nginx source (0.7.62 as of this writing). Run patch like this:

cd nginx-0.7.62 # or whatever
patch -p0 < /path/to/upstream/hash/directory/nginx.patch

Then add the following option to your Nginx ./configure command:

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

Then "make" and "make install" as usual.

The hash algorithm

As of 0.3, the hash algorithm and the failover algorithm use a CRC-32 computation compatible with PECL Memcache.

Changes

. * 0.3.1: Updated patch to work with latest Nginx sources
. * 0.3: Feature: PECL Memcache compatibility. Change: Removed "hash_method" directive.

Bugs

Send bug reports to Evan Miller .