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 使用者手冊