Closed zhwaaaaaa closed 1 month ago
项目地址:https://github.com/zhwaaaaaa/nginx-nacos-upstream
类别:C
亮点:在 nginx 中以纯 C 实现 http2/grpc 协议编解码 并完成与 nacos 的通讯,通讯的过程也是在辅助 进程中完成的,worker 进程 通过 共享内存拿到 nacos 数据。丝毫不会影响 nginx 的性能。
示例代码:
nacos { server_list localhost:8848; # nacos 服务器列表,空格隔开 # 可以使用 grpc 订阅。 nacos 2.x 版本才支持,推荐使用。 grpc_server_list localhost:9848; # nacos grpc服务器列表,空格隔开。一般是 nacos 端口 + 1000 # 也可使用udp。都配置的情况下使用 udp。 #udp_port 19999; #udp 端口号 #udp_ip 127.0.0.1; #udp ip 地址。 #udp_bind 0.0.0.0:19999; # 绑定udp 地址 error_log logs/nacos.log info; default_group DEFAULT_GROUP; # 默认的nacos group name cache_dir cmake-build-debug/nacos/; }
http { upstream backend {
# 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 功能,可以有更多的应用场景。
推荐项目
项目地址:https://github.com/zhwaaaaaa/nginx-nacos-upstream
类别:C
亮点:在 nginx 中以纯 C 实现 http2/grpc 协议编解码 并完成与 nacos 的通讯,通讯的过程也是在辅助 进程中完成的,worker 进程 通过 共享内存拿到 nacos 数据。丝毫不会影响 nginx 的性能。
示例代码:
http { upstream backend {
不需要写死 后端 ip。配置 nacos 服务名,nginx 会自己订阅
}