Nginx通过hmux协议访问resin说明文档的介绍

来源:爱站网时间:2021-01-14编辑:网友分享
今天爱站小编将在这里分享Nginx通过hmux协议访问resin说明文档的介绍,想必这个问题是很多用户们都感兴趣的,那么下面我们就去学习吧。

今天爱站小编将在这里分享Nginx通过hmux协议访问resin说明文档的介绍,想必这个问题是很多用户们都感兴趣的,那么下面我们就去学习吧。

这里讲述一下在nginx-0.8.53版本下使用本模块的具体安装方法(linux)
一、安装准备

1、下载nginx-0.8.53;

2、下载ngx_caucho_vx.x.tar包,解开后包含两个文件:config和ngx_caucho.c;

    这里供下载的版本是初步版本,以后会随着需求不断增强其功能。

    ngx_caucho.c文件的实现参考了姚伟斌写的nginx_ajp_module模块,具体功能就是实现hmux协议,并把处理过程异步化。

    hmux协议可以参考文档 http://www.caucho.com/resin-4.0-javadoc/com/caucho/server/hmux/HmuxRequest.html

3、(可选)

    如果nginx与resin之间需要保持keepalive,请下载keepalive模块( http://mdounin.ru/hg/ngx_http_upstream_keepalive );

    如果需要session sticky,请下载nginx_upstream_jvm_route里的ngx_http_upstream_jvm_route_module.c文件。

ngx_caucho_v1.0.tar与ngx_http_upstream_jvm_route_module.c下载在在Linux公社论坛的1号FTP服务器里,下载地址:

FTP地址:ftp://www.linuxidc.com

用户名:www.linuxidc.com

密码:www.muu.cc

在 2011年LinuxIDC.com\4月\Nginx通过hmux协议访问resin说明文档

下载方法见 http://www.linuxidc.net/thread-1187-1-1.html

4、为了实现过程异步,需要修改src/event/ngx_event_pipe.c文件

    原来代码如下:

while (cl && n > 0) {

    ngx_event_pipe_remove_shadow_links(cl->buf);

    size = cl->buf->end - cl->buf->last;

    if (n >= size) {

    cl->buf->last = cl->buf->end;

    /* STUB * / cl->buf->num = p->num++;

    if (p->input_filter(p, cl->buf) == NGX_ERROR){

        return NGX_ABORT;

    }

    n -= size;

    ln = cl;

    cl = cl->next;

    ngx_free_chain(p->pool, ln);

    } else {

    cl->buf->last += n;

    n = 0;

    }

    }

    修改如下:

while (cl && n > 0) {

    ngx_event_pipe_remove_shadow_links(cl->buf);

    size = cl->buf->end - cl->buf->last;

    if (n >= size) {

    cl->buf->last = cl->buf->end;

    n -= size;

    } else {

    cl->buf->last += n;

    n = 0;

    }

    /* STUB */cl->buf->num = p->num++;

    if (p->input_filter(p, cl->buf) == NGX_ERROR) {

    return NGX_ABORT;

    }

    ln = cl;

    cl = cl->next;

    ngx_free_chain(p->pool, ln);

    }

这样修改的目的就是为了让nginx及时返回信息给客户端,否则很长时间才能返回给客户端。

上述修改参考了Maxim Dounin和姚伟斌的做法。

上述也可以采用补丁的方式修改,但鉴于nginx版本众多,往往会导致无法打上补丁,对于这一点请见谅。
二、安装步骤

以下是加上keepalive功能的安装步骤:

1、./configure --add-module=caucho/ --add-module=keepalive/ --with-debug

2、修改objs/Makefile,去掉优化参数(调试目的)

3、make

4、make install

5、修改nginx.conf配置文件如下:

user xxx;

worker_processes 2;

debug_points abort;

error_log logs/error.log debug;

pid logs/nginx.pid;

worker_rlimit_nofile 65536;

events {

    use epoll;

    epoll_events 4096;

    worker_connections 8192;

    accept_mutex off;

}

http {

    include mime.types;

    default_type application/octet-stream;

    access_log logs/access.log;

    sendfile on;

    tcp_nopush on;

    client_header_timeout 5;

    send_timeout 5;

    keepalive_timeout 10;

    server_name_in_redirect off;

    server_tokens off;

    charset GB2312;

    upstream resins{

    server xxx.xxx.xxx.xxx:6800;

    keepalive 1024;

    }

    server {

    listen xxxx;

    server_name xxx.xxx.com;

    location / {

    hmux_pass resins;

    }

    }

}
三、注意

这里需要注意的几点就是:

1、在单进程模式下,keepalive模块是没有问题的,但是在多进程模式下,按照keepaive模块内说明是有问题的。根据我近一年使用 keepalive的经验和源代码分析,在多进程模式下要保持与后端resin的keepalive,必须设置accept_mutex off(这个会在我以后的文档中具体讲述为什么)。

2、这里书写的文档由于是从项目中提炼出来的,如果有什么不明白的或者错误的地方,请提出来,我们团队会尽快解决这些问题的。

以上就是Nginx通过hmux协议访问resin说明文档的介绍,大家看完之后,有没有掌握呢?总之,大家还有更多的想要学习的内容,请继续关注爱站技术频道吧!

上一篇:Linux下如何使用小型WEB服务器boa

下一篇:Apache ph让cgi模式和dso模式共存的技巧

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载