dubbo-nginx-module-plus

配置二进制安装包仓库

首先我们需要配置二进制安装包的仓库,按照以下命令进行配置。(命令中的 CLIENT_TOKEN 需要替换成订阅邮件中的有效 Token)

针对 Ubuntu/Debian/CentOS/Rocky/Red Hat Enterprise Linux/Fedora OS/Alibaba Cloud Linux/Tencent Linux 这些系统:

curl -o get-xray-priv-lib-repo.sh https://pkg2.openresty.com/scripts/get-xray-priv-lib-repo.sh

sudo bash get-xray-priv-lib-repo.sh -l dubbo-nginx-module-plus -t CLIENT_TOKEN

针对 Alpine 操作系统:

curl -o get-xray-priv-lib-repo.sh https://pkg2.openresty.com/scripts/get-xray-priv-lib-repo.sh

sudo sh get-xray-priv-lib-repo.sh -l dubbo-nginx-module-plus -t CLIENT_TOKEN

安装

针对 OpenResty 1.25.3.x

对于使用 yum 包管理器的操作系统,执行以下命令进行私有库的安装。

sudo yum install --disablerepo="*" --enablerepo=dubbo-nginx-module-plus -y dubbo-nginx-module-plus-1.25.3

对于使用 dnf 包管理器的操作系统,执行以下命令进行私有库的安装。

sudo dnf install --disablerepo="*" --enablerepo=dubbo-nginx-module-plus -y dubbo-nginx-module-plus-1.25.3

对于使用 apt 包管理器的操作系统,执行以下命令进行私有库的安装。

sudo apt-get install -y dubbo-nginx-module-plus-1.25.3

对于 alpine 操作系统,执行以下命令进行私有库的安装。

sudo apk add dubbo-nginx-module-plus-1.25.3

重新编译 OpenResty

给 OpenResty 打补丁

下载 OpenResty 源码包并解压,然后在 OpenResty 源码包的 nginx-NGINX_VER 目录下执行以下命令打补丁。 假设补丁文件 ngx-multi-upstream-module-NGINX_VER.patch 在当前目录下。

举例如下:

topdir=$(pwd)

wget https://openresty.org/download/openresty-1.25.3.2.tar.gz
tar -xzvf openresty-1.25.3.2.tar.gz
cd openresty-1.25.3.2/bundle/nginx-1.25.3
cat $topdir/ngx-multi-upstream-module-1.25.3.patch | patch -p1
cd $topdir
tar -czf openresty-1.25.3.2.tar.gz openresty-1.25.3.2

重新编译

根据原来的编译方式重新编译 OpenResty。

Nginx 配置举例

load_module /usr/local/openresty/nginx/modules/ngx_http_multi_upstream_module.so;
load_module /usr/local/openresty/nginx/modules/ngx_stream_multi_upstream_module.so;
load_module /usr/local/openresty/nginx/modules/ngx_http_dubbo_module.so;

http {
    access_log logs/access.log;

    default_type text/plain;
    keepalive_timeout  68000ms;

    upstream dubbo_backend {
        multi 1;
        server 127.0.0.1:20880;
    }

    server {
        listen          1984;
        server_name     'localhost';

        client_max_body_size 30M;

        location /test {
            dubbo_pass_all_headers on;
            dubbo_pass_set args $args;
            dubbo_pass_set uri $uri;
            dubbo_pass_set method $request_method;

            dubbo_pass org.apache.dubbo.samples.tengine.DemoService 0.0.0 tengineDubbo dubbo_backend;
        }
    }
}

dubbo 的配置指令

请参考文档 dubbo 用户手册