521xueweihan / HelloGitHub

:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.
https://hellogithub.com
86.1k stars 9.45k forks source link

【开源自荐】nginx-nacos 模块,让 nginx 拥有服务发现 和 动态配置更新的能力 #2688

Closed zhwaaaaaa closed 1 month ago

zhwaaaaaa commented 3 months ago

推荐项目

http { upstream backend {

不需要写死 后端 ip。配置 nacos 服务名,nginx 会自己订阅

    # server 127.0.0.1:8080;
    # 如果provider使用的spring,service_name 要和 spring.application.name一致
    nacos_subscribe_service service_name=springmvc-nacos-demo group=DEFAULT_GROUP;
}

# 订阅 nacos 的配置。$n_var = "content"  $dd = "md5" 。
# $n_var 变量是 nacos 配置的内容,$dd 变量是 nacos 配置的md5
nacos_config_var $n_var md5_var=$dd data_id=aaabbbbccc group=DEFAULT_GROUP default=123456;

server {
    # ... other config s
    location ^~ / {
        # 把 从 nacos 拿到的配置加入 header
        add_header X-Var-Nacos "$n_var" always;

        # 把 从 nacos 拿到的md5加入 request header
        proxy_set_header "x-nacos-md5" "$dd";

        # 反向代理 到 后端 backend 服务。backend 服务的 地址是 从 nacos 动态订阅的,
        # 注册到 nacos 中的服务名是 springmvc-nacos-demo 
        proxy_pass http://backend;
    }
    location ^~ /echo {
        nacos_config_var $n_var data_id=ccdd;
        # 把 从 nacos 拿到的配置加入 header 和 body
        add_header X-Var-Nacos "$n_var";
        return 200 "hear .... $n_var .... $dd";
    }
}

}


- 后续更新计划:目前 已经支持 nginx 服务订阅 和 配置订阅 两个功能,已经基本可以使用。后续计划集成到 openresty,国内用裸 nginx 不多,大多都在用 openresty,nacos 模块结合 openresty 的lua 功能,可以有更多的应用场景。