当前位置: 首页 > news >正文

Nacos和Nginx集群,项目启动失败问题

一、问题描述

我是用的版本:

Nacos 2.4.3   Nginx  1.20.2

Nacos配置如下:

nginx配置如下:

全部启动后,浏览器访问:localhost/nacos,能打开控制台

application.ym配置如下:

启动项目报错:

从报错信息来看,核心问题是 Nacos 客户端尝试连接localhost:1080失败,这与 Nacos 2.x 版本引入的 gRPC 通信机制有关。

Nacos 2.x 之后,客户端与服务端的通信除了 HTTP(默认 8848),还会使用 gRPC 协议,gRPC 端口是 HTTP 端口 + 1000(例如 HTTP 端口 8848 对应 gRPC 端口 9848)。

我的 Nacos 集群节点端口是884088428844,因此对应的 gRPC 端口应为:8840+1000=98408842+1000=98428844+1000=9844

但你的 Java 项目配置了server-addr: localhost:80(通过 Nginx 代理),客户端会默认尝试连接80+1000=1080端口(这是错误的,因为 Nginx 没有代理 gRPC 端口),导致Connection refused: localhost:1080

二、解决方案:

方案一:直接配置 Nacos 集群地址

跳过 Nginx,直接在项目中配置 Nacos 集群的真实地址(包含所有节点),让客户端自动识别 gRPC 端口:

spring:cloud:nacos:server-addr: 127.0.0.1:8840,127.0.0.1:8842,127.0.0.1:8844  # 直接配置集群节点discovery:cluster-name: HZ

客户端会自动根据每个节点的 HTTP 端口计算对应的 gRPC 端口(如 8840→9840),无需额外配置。

方案二:通过 Nginx 代理 gRPC

如果必须通过 Nginx 访问,需要额外代理 gRPC 端口(9840、9842、9844)也就是端口+1000:

1. 新增 Nginx 的 gRPC 代理配置(注意 Nginx 需要 1.13.10 + 版本支持 gRPC):

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream nacos-cluster {server 127.0.0.1:8840;  server 127.0.0.1:8842;  server 127.0.0.1:8844;  }server {listen 80;server_name localhost;location /nacos {proxy_pass http://nacos-cluster;}	}
}# 新增内容 上方端口 + 1000stream{upstream nacoscluster{server 127.0.0.1:9840;  server 127.0.0.1:9842;  server 127.0.0.1:9844;  }server{listen 1080;proxy_pass nacoscluster;  }
}

2. 项目yml配置server-addr: localhost:80,此时客户端会通过localhost:1080访问 gRPC 代理。

三、解决验证:

方案一成功:

    验证方案二:

    http://www.dtcms.com/a/553066.html

    相关文章:

  1. Opencv(五): 腐蚀和膨胀
  2. 17.React获取DOM的方式
  3. 编码器读写操作方式
  4. WEB服务
  5. 2025年10月31日 AI大事件
  6. Rust开发中泛型结构体定义与使用(通用容器)
  7. 9-SpringCloud-服务网关 Gateway-高级特性之 Filter-2
  8. Electron中使用exceljs+Node模块编写
  9. 优秀服装网站设计业务接单网站
  10. 构造/析构/赋值运算理解
  11. 给予虚拟成像台尝鲜版九,支持 HTML 原型模式
  12. 区块链技术在生产数据管理中的应用:Hyperledger Fabric与蚂蚁链智能合约设计
  13. 可以用手机建设网站吗wordpress程序
  14. deepin Ubuntu/Debian系统 环境下安装nginx,php,mysql,手动安装,配置自己的项目
  15. SDC命令详解:使用set_dont_touch_network命令进行约束
  16. CI/CD(三)—— 【保姆级实操】Jenkins+Docker GitLab+Tomcat 实现微服务CI/CD全流程部署
  17. 20. Portals和Fragment
  18. 企业网站管理wordpress必备插件
  19. 数据结构之栈和队列-栈
  20. 操作系统-线程
  21. sward零基础学习,创建第一个知识库
  22. 门户网站建设方式网站制作叫什么
  23. step-ca 证书生成完整步骤指南
  24. 从字节码生成看 Lua VM 前端与后端协同:编译器与执行器衔接逻辑
  25. SQLite3语句以及FMDB数据存储初步学习
  26. 抽奖网站怎么制作长沙人力资源招聘网
  27. IntelliJ IDEA 远程断点调试完全指南
  28. uniapp使用sqlite模块
  29. Lua--数据文件和持久性
  30. Spark SQL 解锁电商数据密码:窗口函数大显身手