[alibaba/tengine]ngx_http_upstream_dynamic_module 模块能否单独发包?

2024-02-21 683 views
4
Question

Tengine 内部使用的 ngx_http_upstream_dynamic_module 能否单独发包?使得社区可以在编译 Nginx 的同时,引入 Tengine 的可用模块。例如:

./configure ...
--add-module=ngx_http_upstream_dynamic_module

回答

9

请问,目前有解决方法了吗

2

社区有一些与 ngx_http_upstream_dynamic_module 功能类似的模块可以使用,比如:

  • nginx-upstream-jdomain

或者,直接使用设置变量的办法,确保每次请求都解析一次域名记录,参考:

  • 文档
    set $website "http://www.nginx.com";
    proxy_pass $website;
2

好的,谢谢,但是我看这两种差不多,都无法设置多个server,目前,是没有好的方法将Tenginx的相关.c文件引入到原生nginx吗?

1

如果没有技术团队支持的话,是很困难的。

主要难点有下述几个:

  1. 要检查对应 tengine 团队 C 文件的文件头,看是否有单独配置 nginx 项目的标准接口,例如:
    # include <nginx.h>
    # include <ngx_config.h>
    # include <ngx_core.h>
    # include <ngx_http.h>
  2. 需要为引入 nginx 项目的 C 文件配置单独的 configure 文件,例如:
    ngx_addon_name=ngx_http_hello_module
    HTTP_MODULES="$HTTP_MODULES ngx_http_hello_module"
    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_module.c"

基于上述操作,确保相应 C 文件内部业务逻辑完整,即可引入 nginx 做编码,但整体步骤很繁琐。 可以参考这里

1

嗯嗯,明白了,谢谢你