Mastering Nginx

(Ron) #1
Chapter 4

[ 79 ]

If a client should always get the same upstream server, to effect a poor-man's session-


stickiness, the ip_hash directive should be used. When the distribution of requests
leads to widely varying response times per request, the least_conn algorithm


should be selected. The default round-robin algorithm is good for a general case
where no special consideration of either the client or upstream server is required.


Non-HTTP upstream servers


So far, we've focused on communicating with upstream servers over HTTP. For this,


we use the proxy_pass directive. As hinted at earlier in this chapter, in the Keepalive


connections section, NGINX can proxy requests to a number of different kinds of
upstream servers. Each has its corresponding *_pass directive.


Memcached upstream servers

The memcached NGINX module (enabled by default) is responsible for communicating


with a memcached daemon. As such, there is no direct communication between the
client and the memcached daemon; that is, NGINX does not act as a reverse-proxy in


this sense. The memcached module enables NGINX to speak the memcached protocol,


so that a key lookup can be done before a request is passed to an application server:


upstream memcaches {

server 10.0.100.10:11211;

server 10.0.100.20:11211;

}

server {

location / {

set $memcached_key "$uri?$args";

memcached_pass memcaches;

error_page 404 = @appserver;

}
Free download pdf