nginx-upstream-jvm-route

本文介绍了一个第三方 Nginx 模块——nginx_upstream_jvm_route,该模块通过读取 session cookie 实现会话粘滞性。若未找到 session 信息,则采用轮询方式分配请求。文章提供了针对 Resin 和 Tomcat 的配置示例,并说明了如何安装及使用此模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://code.google.com/p/nginx-upstream-jvm-route/

nginx_upstream_jvm_route


This module achieves session stickiness with the session cookie. If the session is not in the cookie or URL, the module will be a normal Round-Robin upstream module.

INSTALLATION

    cd nginx
-
0.7
.
59
 
# or whatever

    patch 
-
p0 
<
 
/path/
to
/
this
/
directory
/
jvm_route
.
patch

compile nginx with the following addition option:

    
--
add
-
module
=
/path/
to
/
this
/
directory

EXAMPLE

1.For resin

upstream backend 
{

    server 
192.168
.
0.100
 srun_id
=
a
;

    server 
192.168
.
0.101
 srun_id
=
b
;

    server 
192.168
.
0.102
 srun_id
=
c
;

    server 
192.168
.
0.103
 srun_id
=
d
;


    jvm_route $cookie_JSESSIONID
;


}

detail

2.For tomcat

upstream backend 
{

    server 
192.168
.
0.100
 srun_id
=
a
;

    server 
192.168
.
0.101
 srun_id
=
b
;

    server 
192.168
.
0.102
 srun_id
=
c
;

    server 
192.168
.
0.103
 srun_id
=
d
;


    jvm_route $cookie_JSESSIONID reverse
;


}

detail

3. A simple jave test page

here

DIRECTIVES

jvm_route

syntax: jvm_route $cookie_COOKIE[ |session_url] [ reverse]
default: none
context: upstream
description:
'$cookie_SESSION_COOKIE' specifies the session cookie name(0.7.24+). 'session_url' specifies a different session name in the URL when the client does not accept a cookie. The session name is case-insensitive. In this module, if it does not find the session_url, it will use the session cookie name instead. So if the session name in cookie is the name with its in URL, you don't need give the session_url name.
With scanning this cookie, the module will send the request to right backend server. As far as I know, the resin's srun_id name is in the head of cookie. For example, requests with cookie value 'a* * * ' are always sent to the server with the srun_id of 'a'. But tomcat's JSESSIONID is opposite, which is like '* * * .a'. The parameter of 'reverse' specifies the cookie scanned from tail to head.
If the request fails to be sent to the chosen backend server, It will try another server with the Round-Robin mode until all the upstream servers tried. The directive proxy_next_upstream can specify in what cases the request will be transmitted to the next server. If you want to force the session sticky, you can set 'proxy_next_upstream off'.

server

Every syntax is the same with the official directive except the parameter of 'srun_id' which identified the backend JVM's name by cookie. The default srun_id's value is 'a';

NOTE

This is a third-party module. And you need careful test before using this module in your production environment.

Questions/patches may be directed to Weibin Yao, yaoweibin@gmail.com.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值