老师我想请问一下怎么通过nginx 去转发nacos的stream

老师我想请问一下怎么通过nginx 去转发nacos的stream

package main

import (
    "fmt"
    "github.com/nacos-group/nacos-sdk-go/v2/clients"
    "github.com/nacos-group/nacos-sdk-go/v2/common/constant"
    "github.com/nacos-group/nacos-sdk-go/v2/vo"
)

func main() {
    serverConfigs := []constant.ServerConfig{
       {
          IpAddr: "127.0.0.1",
          Port:   8848,
          //IpAddr: "www.nacos.top",
          //ContextPath: "/nacos",
          //Port: 8848,
          //Scheme:      "http",
       },
    }

    // 创建clientConfig
    clientConfig := constant.ClientConfig{
       NamespaceId:         "3013d5b2-0ae6-4e5b-9d64-1bebe06fd8f7", // 如果需要支持多namespace,我们可以创建多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
       TimeoutMs:           5000,
       NotLoadCacheAtStart: true,
       LogDir:              "tmp/nacos/log",
       CacheDir:            "tmp/nacos/cache",
       LogLevel:            "debug",
    }
    // 创建动态配置客户端
    configClient, err := clients.CreateConfigClient(map[string]interface{}{
       "serverConfigs": serverConfigs,
       "clientConfig":  clientConfig,
    })
    if err != nil {
       panic(err)
    }
    content, err := configClient.GetConfig(vo.ConfigParam{
       DataId: "user-web.yaml",
       Group:  "dev"})

    fmt.Println(content)
}
# http
server {
    listen 8848;
    server_name www.nacos.top;

    location / {
        proxy_pass http://127.0.0.1:8848;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# stream
upstream nacos-grpc-9848 {
    server 127.0.0.1:9848;
  }
  upstream nacos-grpc-9849 {
    server 127.0.0.1:9849;
  }

  server {
    listen 9848 ; # grpc方式对外暴露端口
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass nacos-grpc-9848; # 此处TCP端口转发代理
  }

  server {
    listen 9849 ; # grpc方式对外暴露端口
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass nacos-grpc-9849; # 此处TCP端口转发代理
  }
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -p 9848:9848 -p 9849:9849 -d nacos/nacos-server:latest

在docker 多暴漏了2个需要的端口后, 我通过127.0.0.1:8848是可以正确的获取配置

因为我是macos所以使用了虚拟机,通过ng希望配置成域名访问.

域名访问(www.nacos.top)nacos-web是可以成功的,目前就是9848这个端口的rpc感觉访问不上.

使用telnet www.nacos.top(改host的域名)可以连接9848

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
bobby 2024-01-25 10:08:58
  1. nacos的stream是什么?有没有文档说明?

  2. nginx是一个http层的转发,其他协议转发需要找其他方法配合

  • 新版本部署
    Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。
    端口与主端口的偏移量描述
    9848    1000    客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求    
    9849    1001    服务端gRPC请求服务端端口,用于服务间同步等    
    7848    -1000    Jraft请求服务端端口,用于处理服务端间的Raft相关请求    
    使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。

    我说得可能不太准确,上面的是2.0.0部分文档.

    我的nginx配置是不是思路不对呢? 

    2024-01-25 12:12:22
  • bobby 回复 提问者 沉默寡言黄少天丶 #2

    https://blog.csdn.net/Trollz/article/details/134162229 可以看看这个,我自己没有亲自配置过所以无法提供一定可行的配置

    2024-01-25 13:42:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       490    人
  • 解答问题       559    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师